1

我正在尝试在 JSFiddle 中测试某些内容,但出现上述错误。

这是 HTML:

<a onclick="populate();return false;" class="populate" href="?hello">Hello</a>
<a onclick="populate();return false;" class="populate" href="?hello">One More</a>
<a onclick="populate();return false;" class="populate" href="?hello">Another One</a>
<a onclick="populate();return false;" class="populate" href="?hello">Another Other One</a>

Javascript:

function populate(){
        var populate = document.getElementsByClassName('populate');     
        for(var i=0; i < populate.length; i++)
            {
                var item = populate[i];
                item.addEventListener('click', function() {
                    var current = this.getAttribute('href');
                    alert(current);
                }, false);
            }
        return false;
    }

JSFIDDLE 链接

任何帮助或建议将不胜感激!

4

2 回答 2

1

您的 JavaScript 顺序有问题:如果您使用内联 JavaScript 事件处理程序,请确保之前定义了所有使用的函数!

在您的情况下,该函数populate()是在一个onload事件中定义的,因此在解析内联 JavaScript 时,浏览器并不知道它。只需将 JavaScript 的执行换成“No wrap - in <head>”就可以了。

更新小提琴

编辑(来自我的评论)

该警报仅在第二次单击后起作用,因为相应的单击处理程序是在函数内部分配的populate(),该函数仅在单击后执行。

不过,您可以更改分配,就像在这个新的 fiddle中一样。

于 2013-07-15T10:09:33.523 回答
0

您需要No Wrap in Body在左侧面板的第二个下拉菜单中选择

演示:小提琴

于 2013-07-15T10:07:10.447 回答