eventStr 值不可变

作者:vkvi 来源:ITPOW(原创) 日期:2007-5-17

在各浏览器中动态添加事件-参数篇 一文中提到了 eventStr,这是为 IE 动态设置事件时使用的变量(常量)。

一、该值不可改变。

<input type="button" value="111" id="b1">
<input type="button" value="222" id="b2">
<script type="text/javascript" language="javascript">
<!--
function F1()
{
    alert("F1");
}
function F2()
{
    alert("F2");
}
var eventStr = "F1();";
document.getElementById("b1").attachEvent("onclick", function(){eval(eventStr)});
eventStr = "F2();"; //错误,不能改变 eventStr。
document.getElementById("b2").attachEvent("onclick", function(){eval(eventStr)});
-->
</script>

可以看出,eventStr 开始为 "F1();",后来后改变为 "F2();",这就造成点击两个按钮触发的都是 F2 函数

二、但可以这么做。

<input type="button" value="111" id="b1">
<input type="button" value="222" id="b2">
<script type="text/javascript" language="javascript">
<!--
function F1()
{
    alert("F1");
}
function F2()
{
    alert("F2");
}
function AddEvent(obj, eventProp, eventStr)
{
    obj.attachEvent(eventProp, function(){eval(eventStr)});
}
AddEvent(document.getElementById("b1"), "onclick", "F1();");
AddEvent(document.getElementById("b2"), "onclick", "F2();");
-->
</script>
相关文章