这实际上是一个2部分的问题。
1)我现在遇到麻烦,循环浏览我的链接并用javascript禁用它。我需要从一个名为“bottom”的div id中获取链接,并且其中包含“nhl”的任何链接都需要被禁用,或者只是你不想用它来表达它。到目前为止我有:外部js文件。
onload = function() {
var links = document.getElementById("bottom").getElementsByTagName("a");
for(i = 0; i < links.length; i++) {
if (links[i].indexOf("nhl") >= 0) {
links[i].onclick = function() {
return false;
}
}
}
}
html文件:
<div id="bottom" class="change">
<a href="http://www.nhl.com/">www.nhl.com</a>
<a href="https://www.youtube.com/">www.youtube.com</a>
<a href="http://www.w3schools.com/">www.w3schools.com</a>
</div>
2)我的js文件目前包含几个函数,如:
function changeColorOnMouseIn() {
this.style.color = "red";
}
function changeColourOnMouseOut() {
this.style.color = "black";
}
onload = function() {
var divClasses = querySelectorAll(".change p");
for(i = 0; i < divClasses.length; i++) {
divClasses[i].onmouseover = changeColorOnMouseIn;
divClasses[i].onmouseout = changeColorOnMouseOut;
}
}
我的问题是我应该继续这样做,还是做这样的事情:
onload = function() {
var divClasses = document.querySelectorAll(".change p");
for(i = 0; i < divClasses.length; i++) {
divClasses[i].onmouseover = function() {
this.style.color = "red";
}
}
}
或者我应该只使用for循环创建一个函数,并在onload函数中调用“myFunctionName()”?有什么区别?你会在什么情况下做另一个?
谢谢!
答案 0 :(得分:0)
对于第一部分我在你的循环中发现了一个小错误,你需要编写链接[i] .href.indexOf(&#34; nhl&#34;)
onload = function() {
var links = document.getElementById("bottom").getElementsByTagName("a");
for(i = 0; i < links.length; i++) {
if(links[i].href.indexOf("nhl") >= 0) {// CHANGE
links[i].onclick = function() {
return false;
}
}
}
}
对于第二部分,您可以通过CSS
轻松完成.change p {
color: black;
}
.change p:hover{
color: red;
}
如果您仍想在javascript中使用,那么这种方法更好
function changeColorOnMouseIn() {
this.style.color = "red";
}
function changeColourOnMouseOut() {
this.style.color = "black";
}
onload = function() {
var divClasses = querySelectorAll(".change p");
for(i = 0; i < divClasses.length; i++) {
divClasses[i].onmouseover = changeColorOnMouseIn;
divClasses[i].onmouseout = changeColorOnMouseOut;
}
}
这里为什么这种方法更好的方法是因为下面的代码会创建n个匿名函数,所以如果循环是10个项目将有10个匿名函数,整个上面的方法它将具有单个函数声明。
divClasses[i].onmouseover = function() {
this.style.color = "red";
}