【问题标题】:JSFiddle: Please us POST requestJSFiddle:请我们发布请求
【发布时间】:2013-07-15 18:26:43
【问题描述】:

我正在尝试在 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 LINK

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

【问题讨论】:

标签: javascript html anchor href


【解决方案1】:

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

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

”就可以了。

Updated Fiddle

编辑(来自我的评论)

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

不过,您可以更改分配,例如 new fiddle

【讨论】:

  • 您和 Arun 的解决方案有效。但是我能问一些原本没有问的问题吗,为什么必须双击才能显示警报?
  • @msbodetti 该警报仅在第二次单击后起作用,因为相应的单击处理程序是在 populate() 函数内分配的,该函数仅在单击后执行。不过,您可以更改分配,例如 new fiddle
  • 非常感谢您彻底解释一切! :)
【解决方案2】:

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

演示:Fiddle

【讨论】:

  • 感谢您的解决方案有效!为什么必须双击才能触发警报?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多