对于循环错误:未捕获的引用错误,未定义变量.怎么了
For loop error: Uncaught ReferenceError, variable is not defined. What's wrong?
我创建了一个 css 菜单,我想让它们中的每一个在鼠标悬停事件时改变它们的颜色(我只是在学习 javascript,特别是 for 循环,我知道可以用 CSS3 实现这一点)。
所以,它不起作用,我在 DOM 控制台上收到此错误:Uncaught ReferenceError: linkIdOn is not defined (line 44)
这是我的 CSS:
<body>
<div id="menuPrincipal">
<div id="link1" class="link"><a href="">Link 1</a></div>
<div id="link2" class="link"><a href="">Link 2</a></div>
<div id="link3" class="link"><a href="">Link 3</a></div>
<div id="link4" class="link"><a href="">Link 4</a></div>
</div>
这是我的javascript:
function cambioColorOnMouseover(){
for (linkId=1; linkId<5; linkId++){
var linkIdOn='link'+linkId;
document.getElementById(linkIdOn).style.backgroundColor="#eee";
console.log(linkIdOn);
}
}
function cambioColorOnLeave(){
for (linkId=1; linkId<5; linkId++){
var linkIdOff='link'+linkId;
document.getElementById(linkIdOff).style.backgroundColor="#ccc";
console.log(linkIdOff);
}
}
document.getElementById('link'+linkIdOn).onmouseover=cambioColorOnMouseover; <-- line 44
document.getElementById('link'+linkIdOff).onmouseout=cambioColorOnLeave;
linkIdOn
的范围仅限于cambioColorOnMouseover
。但这不是你唯一的问题。你需要移动几件东西。
我的建议:
for(var linkId = 1; linkId < 5; linkId++) {
document.getElementById('link'+linkId).onmouseover = function() {
this.style.backgroundColor = "#eee";
console.log(this.id);
};
document.getElementById('link'+linkId).onmouseout = function() {
this.style.backgroundColor = "#ccc";
console.log(this.id);
};
}
为了其他不知道 CSS3 方法的人的利益(尽管 OP 想在 JavaScript 中做到这一点,这是首选方法):
#link1, #link2, #link3, #link4, #link5 {
background-color: #ccc;
}
#link1:hover, #link2:hover, #link3:hover, #link4:hover, #link5:hover {
background-color: #eee;
}
虽然如果你做了CSS,你可能会有一个link
类而不是使用ids。
我更改了两个阻止示例工作的小错别字(系统告诉我编辑必须至少为 6 个字符)感谢您的帮助! - 罗莎蒙达)
您可能想执行以下操作:
function linkOn() {
this.style.backgroundColor = '#eee';
}
function linkOff() {
this.style.backgroundColor = '#ccc';
}
window.onload = function() {
var links = document.links;
for (var i=0, iLen=links.length; i<iLen; i++) {
links[i].onmouseover = linkOn;
links[i].onmouseout = linkOff;
}
}
尽管您最好添加和删除一个类,以便您可以通过CSS而不是脚本来控制效果。
相关文章:
- gmaps4rails 2.4.6未捕获引用错误:未定义Gmaps
- Wordpress中的Javascript出现匿名函数/引用错误
- 使用dc.js、d3.js和crossfilter引用错误
- 未捕获引用错误:未定义validateform
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- $未定义-未捕获引用错误
- Sitecore”;未捕获引用错误:未定义MultilistWithSearch;
- Wordpress:未捕获引用错误:未定义速度
- Node.js引用错误:未定义类名
- 我该如何解决“;未捕获引用错误:谷歌没有定义"?(谷歌地图API)
- Javascript 未定义错误:引用错误:未定义 ALT
- 为流星重新包装砌体会产生错误“引用错误:窗口未定义”
- 未定义错误引用
- 错误: 引用错误: 未定义发送
- 角度砌体指令隐藏内部元素,错误:引用错误:未定义砌体
- CoffeeScript 在 'for v in values' 中创建一个全局变量 'v',导致事件中的错误引用
- Javascript:未捕获类型错误:引用创建的对象时无法调用未定义的方法“add”
- 架构错误 - 引用错误:未定义电话
- 获取错误“引用错误:未定义事件”
- 打字稿错误引用_this