2010-06-04 71 views
0

我更新了我的帖子。现在它说“链接未定义”“thisLink [link] .scopeObject = new Image();”链接保留很重要,因为它是linkObj的一个属性,它保存当前链接。由于它提供的循环功能,我使用[]作为属性而不是点符号。当用户点击链接问题时显示css背景图片

<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> 

+0

删除违规行前的'var'。 – 2010-06-04 20:30:49

回答

1

我相信麻烦的是在这一行:var linkObj[link] = document.links[i];。您需要删除该行前面的var命令。我认为你的linkObj已经在你的代码中的其他地方声明过了,并且你试图向它插入一个新的值。如果没有,请发布更完整的代码,我可以进一步了解它。

- EDITED BELOW -

然后我的发言。 “我想你在其他地方定义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函数所需的行为对我来说有点朦胧,但至少使用它来开始分配属性给页面中的链接。

+0

如果我删除它,它说linkObj没有定义。 – JohnMerlino 2010-06-04 21:04:32