Javascript (“menulinks”)。getElementsByTagName(“a”); 对于(var o=0;o
这里有另一种解决范围界定问题的方法;将循环体包装在一个生命中。它基本上是@sfletche的答案,但“向上”一级,不需要参数:Javascript (“menulinks”)。getElementsByTagName(“a”); 对于(var o=0;o,javascript,html,Javascript,Html,这里有另一种解决范围界定问题的方法;将循环体包装在一个生命中。它基本上是@sfletche的答案,但“向上”一级,不需要参数: var a=document.getElementById(“menulinks”).getElementsByTagName(“a”); 对于(var o=0;o
var a=document.getElementById(“menulinks”).getElementsByTagName(“a”);
对于(var o=0;o
这里有另一种解决范围界定问题的方法;将循环体包装在一个生命中。它基本上是@sfletche的答案,但“向上”一级,不需要参数:
var a=document.getElementById(“menulinks”).getElementsByTagName(“a”);
对于(var o=0;o
它不是专门提升,而是范围界定,不是吗?来自MDN:“提升是JavaScript将声明移动到范围顶部(全局范围或当前函数范围)的行为。”在这种情况下也是如此。我想,我的反对意见可能是语义学。我可能只是不再考虑它,现在也无法解释:)类似于我对@sfletche答案的评论;如果要有一个生命来总结事情,我可能更不愿意费心传递一个参数(我觉得有点难看)。但这一切都是一样的。这不是具体的提升,而是范围界定,不是吗?来自MDN:“提升是JavaScript将声明移动到范围顶部(全局范围或当前函数范围)的行为。”在这种情况下也是如此。我想,我的反对意见可能是语义学。我可能只是不再考虑它,现在也无法解释:)类似于我对@sfletche答案的评论;如果要有一个生命来总结事情,我可能更不愿意费心传递一个参数(我觉得有点难看).但都是一样的。我的答案中的另一个选择是将循环体包装在一个IIFE中,并跳过参数传递。显然,这本质上与此相同,但我将其作为一个选择。我想最终基于函数的答案都是一样的。我确实喜欢你的答案@DaveNewton,我认为这是对我的答案的改进答案。只是给了它一个+1。我的答案中的另一个选择是将循环体包装在一个IIFE中,并跳过参数传递。显然,这本质上与此相同,但我将它作为一个选择来呈现。我想最终基于函数的答案都是相同的。我确实喜欢你的答案@DaveNewton,我认为这是对我的答案的改进回答,给它一个+1。
<div id="menulinks">
<ul>
<li><a href="#link1">Link 1</a></li>
<li><a href="#link2">Link 2</a></li>
<li><a href="#link3">Link 3</a></li>
<li><a href="#link4">Link 4</a></li>
</ul>
</div>
var a = document.getElementById("menulinks").getElementsByTagName("a");
for ( var o = 0; o < a.length; o++ ) {
var clickedLink = a[o];
clickedLink.addEventListener("click", function() {
var b = clickedLink.getAttribute("href");
alert(b);
});
}
for ( var o = 0; o < a.length; o++ ) {
var clickedLink = a[o];
(function(clickedLink) {
clickedLink.addEventListener("click", function() {
var b = clickedLink.getAttribute("href");
alert(b);
});
})(clickedLink);
}
var b = clickedLink.getAttribute("href");
var b = this.getAttribute("href");
var a = document.getElementById("menulinks").getElementsByTagName("a");
var clikedLink, o;
for ( o = 0; o < a.length; o++ ) {
clickedLink = a[o];
clickedLink.addEventListener("click", function() {
var b = clickedLink.getAttribute("href");
alert(b);
});
}
var a = document.getElementById("menulinks").getElementsByTagName("a");
for ( var o = 0; o < a.length; o++ ) {
a[o].addEventListener("click", function() {
var b = this.getAttribute("href");
alert(b);
}.bind(a[o]));
}
var a = document.getElementById("menulinks").getElementsByTagName("a");
for ( var o = 0; o < a.length; o++ ) {
(function(l) {
l.addEventListener("click", function() {
var b = l.getAttribute("href");
alert(b);
})(a[o]);
}