注册 登录
编程论坛 JavaScript论坛

提个关于用js设置事件的问题,明明设置了,动态代码却没有,但可执行。

acera002 发布于 2009-10-29 23:03, 672 次点击
HTML:
 <input type="button" value="testBtn2" onclick="testBtnClick2();" />
 <input id="testBtn3" type="button" value="testBtn3" onclick="testBtnClick3();" />

JavaScript:
function testBtnClick2() {
      var  testBtn3  =   document.getElementById("testBtn3");
      alert("testBtn3.outerHTML 1=" + testBtn3.outerHTML);
      var btn3onclick = testBtn3.onclick
      testBtn3.onclick =null;
      testBtn3.onclick = btn3onclick;
      alert("testBtn3.outerHTML 2=" + testBtn3.outerHTML);
}
function testBtnClick3() {
    alert("click3");
}

操作过程:
1。页面打开后,先按按钮2
   两次alert内容分别为:<INPUT id=testBtn3 onclick=testBtnClick3); type=button value=testBtn3>
                        <INPUT id=testBtn3 type=button value=testBtn3>
2。按按钮3
   可以弹出对话框"click3"

问题:
1。testBtnClick2方法中,一度将按钮3的onclick事件清空,但立即又将其还原。为什么两次alert的内容会不一样?
2。第二次的alert结果中,按钮3明明没有onclick事件,为什么按按钮3后,可以正常弹出对话框"click3"?
3。另外,如果把testBtn3.onclick = btn3onclick;这句话删掉,按按钮3就不能弹出对话框"click3"了,这点倒是可以理解,因为变成null了嘛。

请高手赐教!!!!
5 回复
#2
foktime2009-10-31 12:45
testBtn3.onclick = btn3onclick;   
btn3onclick 事件句柄。
#3
linuxpluto2009-10-31 22:13
赋值方式不一样,看下面的修改
程序代码:

<input type="button" value="testBtn2" onclick="testBtnClick2();" />
<input id="testBtn3" type="button" value="testBtn3" onclick="testBtnClick3();" />

<script language="JavaScript">
<!--
function testBtnClick2() {
      var  testBtn3  =   document.getElementById("testBtn3");
      alert("testBtn3.outerHTML 1=" + testBtn3.outerHTML);

      var btn3onclick = testBtn3.onclick
      testBtn3.onclick =null;
      testBtn3.onclick = btn3onclick;
      alert("testBtn3.outerHTML 2=" + testBtn3.outerHTML);


      testBtn3.setAttribute("onclick","testBtnClick3()");
      alert("testBtn3.outerHTML 3=" + testBtn3.outerHTML);

}
function testBtnClick3() {
    alert("click3");
}
//-->
</script>

#4
linuxpluto2009-10-31 22:19
问题:
1。testBtnClick2方法中,一度将按钮3的onclick事件清空,但立即又将其还原。为什么两次alert的内容会不一样?
2。第二次的alert结果中,按钮3明明没有onclick事件,为什么按按钮3后,可以正常弹出对话框"click3"?
3。另外,如果把testBtn3.onclick = btn3onclick;这句话删掉,按按钮3就不能弹出对话框"click3"了,这点倒是可以理解,因为变成null了嘛。

回答
1,如上一楼
2,testBtn3.onclick = btn3onclick;这地方已经指定了事件,不是表面看到的outerHTML没有就没有
3,你知道了
#5
acera0022009-11-07 17:26
楼上兄弟

谢谢帮我修改了代码,的确第三个注视可以显示onclick事件的内容了,但是,点击按钮3却没有对话框弹出了,不知道是我电脑的问题,还是什么。
你那边如何阿?

[ 本帖最后由 acera002 于 2009-11-7 17:37 编辑 ]
#6
acera0022009-11-07 17:27
啊,以后长记性了,竟然自动结贴了,罪过罪过。。。
1