javascript - onClick 在 p 标签上无法正常工作

标签 javascript onclick

我想为每个 <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/

    相关文章:

    javascript - 使用 jquery 以编程方式触发 typeahead 事件

    javascript - 如何获得自动换色?

    android - 当有另一个布局重叠时,为什么按钮可以点击?

    javascript - 为每种类型的用户提供不同内容的网站(关于安全性)

    javascript - 如何创建批处理文件以添加来自 txt 文档的拉取信息

    javascript - AngularJS 1.3 页面不会在 IE8 中加载

    android - 区分 setOnClickListener 和 setOnTouchListener

    javascript - 如何使用 AJAX 将图像发送到 Symfony Controller ?

    javascript - 在移动设备上显示图像的标题

    css - 如何更改 Bootstrap 3 按钮的 onclick css 样式