0
<script type="text/javascript">
function Msg1(){
var a="noida";
id=1;
  document.getElementById('myText').innerHTML = '<p onclick="nice(id)">'+a+'</p>';
}
function Msg2(){
  document.getElementById('myText').innerHTML = 'Try message 1 again...';
}
</script>
<input type="button" onclick="Msg1()" value="Show Message 1" />
<input type="button"  onclick="Msg2()" value="Show Message 2" />
<p id="myText"></p>

当我点击 Show Message 1 它发送 id 作为字符而不是 1 我想发送给我 1 谢谢

4

3 回答 3

4

您可以执行以下操作:

'<p onclick="nice(\"' + id + '\")">'+a+'</p>';

或者:

'<p onclick="nice(' + escape(JSON.stringify(id)) + ')">'+a+'</p>';

但这很快就会变得非常难以理解。

使用这种方法,您不能发送不容易序列化的东西。一个更健壮、更复杂的解决方案将使用 DOM API 和 EventListener API。

例子:

var id = { foo: "bar" };
var p = document.createElement("p");
p.addEventListener("click", function () {
    nice(id);
});
p.innerText = "ipsum lorem";
document.body.appendChild(p);
于 2013-07-26T12:05:56.023 回答
0

您已经在需要的地方附近进行了串联:

'<p onclick="nice('+id+')">'+a+'</p>';
于 2013-07-26T12:05:43.180 回答
0

使您的 innerHTML 为

'<p onclick="nice(\"' + id + '\")">'+a+'</p>'

替换您的Msg1() Javascript 函数,如下所示

function Msg1(){
   var a="noida";
   var id = 1;
   document.getElementById('myText').innerHTML = '<p onclick="nice(\"' + id + '\")">'+a+'</p>';
}
于 2013-07-26T12:06:51.650 回答