我正在尝试通过单击对话框中的按钮来调用带有参数的 javascript 函数。这是我可以在此处发布的简化版本的流程: 1) 单击 HTML 按钮时,将函数和按钮 ID 作为参数传递给“确认”对话框。2) 在确认对话框中单击“是”时,调用传入的函数,该函数只会更新 HTML 按钮的 ID 和值。
出于某种原因,对话框继续使用原始参数并且永远不会获得更新的参数。我认为代码会更好地解释这个问题。这是 HTML 片段:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery-ui-1.7.2.custom.js"></script>
<div id="confirmDialog"></div>
<div id="div_input">
<input type="button" id="1" value="1" onClick="javascript:confirmAction(updateButton, this.id)" />
</div>
这是javascript片段:
function confirmAction(onSuccessFunction, functionArg)
{
var message = "Are you sure?";
$('#confirmDialog').html(message);
$('#confirmDialog').dialog({
modal: true,
autoOpen: false,
title: 'Confirm',
width: 400,
height: 150,
buttons: {
'Yes': function() {
$(this).dialog('close');
onSuccessFunction(functionArg);
},
'No': function() {
$(this).dialog('close');
}
}
});
$("#confirmDialog").dialog('open');
};
function updateButton(buttonId)
{
alert(buttonId);
var buttonHTML = '';
if(buttonId == '1')
{
buttonHTML = "<input type='button' id='2' value='2' onClick='javascript:confirmAction(updateButton, this.id)' />";
}
else
{
buttonHTML = "<input type='button' id='1' value='1' onClick='javascript:confirmAction(updateButton, this.id)' />";
}
document.getElementById("div_input").innerHTML = buttonHTML;
};
confirmAction(...) 总是调用 updateButton(...) 并且 buttonId 为 '1'。如果我直接调用 updateButton(...) 'onClick',它工作正常。我在这里错过了什么吗?