更新了代码和问题: 我正在为我的RPC服务器创建一个测试工具。目前它由一个页面组成,该页面立即触发AJAX请求以检索服务器上的所有功能。返回后,它会创建一个按钮列表,以便我可以单击进行测试。最后我将添加对话框来测试传递给函数的参数,但是目前我想在单击按钮时触发基本请求。我看到的问题是onclick函数总是触发列表中的最后一个函数,大概是因为当点击被触发时,key被设置为数组中的最后一个值。我想传递button.innerHTML值,但是最后一个button.innerHTML也是最终键的值。
我需要做些什么来正确启动操作?
以下是代码的业务结束:
$(document).ready(function() {
$.jsonRPC.setup({
endPoint: '//api.localhost/index.php'
});
$.jsonRPC.request('getExampleData', {
params: [],
success: function(result) {
for (var key in result.result) {
console.log(key+' => '+result.result[key]);
var button = document.createElement('button');
button.innerHTML = result.result[key];
button.onclick = function() { callRPCFunction(result.result[key]); return false; }
var foo = document.getElementById("page");
foo.appendChild(button);
}
},
error: function(result) {
console.log(result);
}
});
});
function callRPCFunction(target) {
$.jsonRPC.request(target, {
params: [],
success: function(result) {
console.log(result);
},
error: function(result) {
console.log(result);
}
});
}
答案 0 :(得分:0)
在将element.onClick
添加到element
之前,DOM
的分配无效。您可以在element.onClick(callRPCFunction(result.result[key]));
之后致电foo.appendChild(element);
。那可能会奏效!
你可以在这里使用jQuery的live()
,它是为了这些目的而创建的:
$(element).live('click', callRPCFunction(result.result[key])