我更新了我的帖子。现在它说“链接未定义”“thisLink[link].scopeObject = new Image();”保持链接很重要,因为它是保存当前链接的 linkObj 的属性。由于 [] 提供的循环能力,我将 [] 用作属性而不是点符号。
<script type="text/javascript">
window.onload = init;
var linkObj = new Object();
var listItems = new Object();
function init() {
for(var i=0; i < document.links.length; i++) {
var link = document.links[i];
linkObj[link] = link;
setupClick(linkObj);
}
}
function setupClick(thisLink) {
thisLink[link].scopeObject = new Image();
thisLink[link].scopeObject.src = thisLink[link].id + "Img.png";
thisLink[link].onclick = rollClick;
}
function rollClick() {
var list = document.getElementById("target").childNodes;
for(var i=0; i < list.length; i++) {
if(list[i].nodeName == "LI") {
var id = list[i] + i;
listItems[id] = id;
}
}
for(id in listItems){
if(listItems[id].indexOf(this[link].id) > -1) {
listItem[id].style.backgroundImage = this[link].scopeObject.src;
}
}
}
</script>
<ul id="target">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div id="mainContent">
<div id="navLinks">
<ul>
<li><a href="#" id="0">Home</a></li>
<li><a href="#" id="1">About</a></li>
<li><a href="#" id="2">Products</a></li>
<li><a href="#" id="3">Contact</a></li>
</ul>
最佳答案
我认为问题出在这一行:var linkObj[link] = document.links[i];
。您需要删除该行前面的 var 命令。我假设您的 linkObj 已在您的代码中的其他地方声明,并且您正试图向其中插入一个新值。如果没有,请发布更完整的代码,我可以进一步研究。
-- 编辑如下--
然后我的声明“我假设您在别处定义了 linkObj。”是不正确的。您可能需要改用此方法:var linkObj = document.links[i];
。 var 命令创建变量。一旦它们被创建,赋值就不需要 var 命令。您是否试图保留一个引用所有链接的对象供以后使用,或者您是否只需要使用每个链接一次?如果是前者,请在 init() 函数之外添加此行:var linkObj = {};
。
-- 更多编辑 --
圣牛。我不是 100% 确定你的最终目标是什么,但我认为你应该首先使用这样的东西:
<script type="text/javascript">
window.onload = init;
function init() {
for (var i = 0; i < document.links.length; ++i) {
setupClick(document.links[i]);
}
}
function setupClick(thisLink) {
thisLink.scopeObject = new Image();
thisLink.scopeObject.src = thisLink[link].id + "Img.png";
thisLink.onclick = rollClick;
}
</script>
这将使您达到这样一个程度,即您至少要为链接分配属性,因为它们存在于 document.links 数组中。您的 rollClick 函数的预期行为对我来说有点模糊,但至少使用它开始您正在为页面中的链接分配属性。
关于javascript - 用户点击链接问题时显示css背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2977577/