pat*_*tad 2 javascript onclick
我想将click事件绑定到每个事件,<p>但它似乎无法正常工作.
当我运行脚本时,我立即得到三个警报.我只想在点击三个中<p>'的任何一个时获得它们.
谁能告诉我我做错了什么?
编辑:Sry这就是它的样子.HTML正如它应该的那样:<p class="special">text text text</p>等等
(function () {
var myFunction = function (theP) {
alert(theP.id)
}
window.onload = function () {
var pTags = document.getElementsByTagName('p'),
pLength = pTags.length,
i;
for (i = 0; i < pLength; i += 1) {
if(pTags[i].className == 'special'){
pTags[i].onClick = myFunction(pTags[i]);
}
};
}
})();
Run Code Online (Sandbox Code Playgroud)
PS.我不能使用jQuery atm
尝试更换
pTags[i].onClick = myFunction(pTags[i]);
Run Code Online (Sandbox Code Playgroud)
同
pTags[i].onClick = function() { myFunction(pTags[i]); }
Run Code Online (Sandbox Code Playgroud)
您可以看到,当您指定onClick对象时,您正在将表达式的结果复制到该对象.您应该复制的是在p单击时调用的函数.
相反,您正在运行myFunction(pTags[i])执行alert()s 的命令,并获取该函数的结果.现在,由于函数不返回任何内容,因此表达式的值myFunction(pTags[i])是未定义的.
你拿这个值,并分配给它onClick.基本上你所做的是:
对于每个"特殊"段落:
alertundefined给段落onClick.| 归档时间: |
|
| 查看次数: |
11852 次 |
| 最近记录: |