无法使用addeventlistener正确触发JS

时间:2016-02-01 14:23:12

标签: javascript addeventlistener

两个示例:JSfiddle without evenlistenerJSfiddle with eventlistener

两者的基本代码是:

HTML

# run azure test every 5 minutes
*/5 * * * * /opt/bin/azure-test >/tmp/azure-test.out 2>&1

JS

<body>

</body><p id="one" tabindex="0">ID one of tag P</p>
<input id="two" type="text" value="An input field">
<button id="three">A Button</button>

<p id="showid" tabindex="0"></p>

为了使脚本正常工作,我添加了function myFunction() { var x = document.activeElement.id; document.getElementById("showid").innerHTML = x; } (请参阅JSF的第一个示例),但如果我添加的是onclick="myFunction()"而不是eventlistener,我就不会正确的结果。

带有onclick="myFunction()"的JS代码:

eventlistener

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

在您的第一个示例中,点击事件附加到正文。

<body onclick="myFunction()">

&#34; 点击&#34;可以使用事件代替&#39; DOMContentLoaded &#39;得到相同的结果:

document.addEventListener('click', function myFunction() {
    var x = document.activeElement.id;
    document.getElementById("showid").innerHTML = x;
}, false);

答案 1 :(得分:0)

您的问题很难理解,但根据您的评论和示例,我认为您想知道的是如何让您的函数在DOMContentLoaded上执行。

确实你的功能正在加载......

你的函数没有触发的原因是因为当你使用DOMContentLoaded事件时,'p'元素在你将它赋给x时没有激活,所以x是未定义的。

<cfheader name="Content-Type" value="application/json">
<cfoutput>#serializejson(result)#</cfoutput>

首先设置焦点,现在代码可以正常工作。