我想为每个 <p>
绑定(bind)一个点击事件但它似乎无法正常工作。
当我运行脚本时,我立即收到三个警报。我只想在单击三个 <p>'
中的任何一个时获取它们s。
谁能告诉我我做错了什么?
编辑:对不起,这就是它的样子。
HTML 应该是这样的:<p class="special">text text text</p>
ETC
(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]);
}
};
}
})();
附言。我不能使用 jQuery atm
最佳答案
尝试更换
pTags[i].onClick = myFunction(pTags[i]);
和
pTags[i].onClick = function() { myFunction(pTags[i]); }
你看,当你分配给
onClick
对于一个对象,您正在将表达式的结果复制到它。您应该复制的是在 p
时调用的函数。被点击。相反,你是 正在运行命令
myFunction(pTags[i])
,执行 alert()
s,并获取函数的结果。现在,由于函数不返回任何内容,表达式 myFunction(pTags[i])
的值未定义。你把那个值赋值给
onClick
.所以基本上你所做的是:对于每个“特殊”段落:
alert
undefined
到段落的onClick
. 关于javascript - onClick 在 p 标签上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791515/