2010-06-04 70 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