所以我们有一个页面:
<span id='container'>
<a href='#' id='first'>First Link</a>
<a href='#' id='second'>Second Link</a>
</span>
Run Code Online (Sandbox Code Playgroud)
并想要添加一些点击事件:
first.addEventListener('click', function(){alert('sup!');})
Run Code Online (Sandbox Code Playgroud)
奇迹般有效!但是,当您将第二个参数设为外部函数时:
function message_me(m_text){
alert(m_text)
}
second.addEventListener('click', message_me('shazam'))
Run Code Online (Sandbox Code Playgroud)
它立即调用该函数.我怎么能阻止这个?很烦人!
这是一个现场演示:http://jsfiddle.net/ey7pB/1/
我正在尝试[在jsfiddle]中创建一个函数来将新创建的函数追加TextNode到<p>下面的HTML中:
<button onclick="addTextNode('YES! ');">YES!</button>
<button onclick="addTextNode('NO! ');">NO!</button>
<button onclick="addTextNode('WE CAN! ');">WE CAN!</button>
<hr />
<p id="p1">First line of paragraph.</p>
Run Code Online (Sandbox Code Playgroud)
这是我的javascript:
function addTextNode(text) {
var newtext = document.createTextNode(text),
p1 = document.getElementById("p1");
p1.appendChild(newtext);
}
Run Code Online (Sandbox Code Playgroud)
这很好用.然而,当我试图通过从标记中删除行为来使我的javascript"不引人注目"时,症结就会显现出来......
<button>YES!</button>
<button>NO!</button>
<button>WE CAN!</button>
<hr />
<p id="p1">First line of paragraph.</p>
Run Code Online (Sandbox Code Playgroud)
然后利用一个循环附加addEventListener到每个<button>元素,然后使用子TextNode进行调用addTextNode:
function addTextNode(text) {
var newtext = document.createTextNode(text),
p1 = document.getElementById("p1");
p1.appendChild(newtext);
}
var btns = document.getElementsByTagName("button");
for(i = 0; i < btns.length; i++){ …Run Code Online (Sandbox Code Playgroud)