2012-12-24 30 views
0

我有一個特定的div元素及其id的問題。我想添加懸停鏈接風格,但如何做到這一點?我不太明白。我的例子:不正確的JS和HTML

<a href="#" onmouseover="changeDiv('image_1')" onmouseout="defaultDiv('image_1')">Home</a> 

和腳本處理另外的風格:

<script> 
    function changeDiv('image_1'){ 
    document.getElementById('image_1').style.width="230px"; 
    document.getElementById('image_1').style.height="162px"; 
    document.getElementById('image_1').style.top="0px"; 
    } 
</script> 

告訴我爲什麼這個代碼不爲我的ID image_1工作?

+0

你的論點與'changeDiv()'函數是一個字符串文字,那是什麼呢? –

+0

函數defaultDiv代碼? –

+0

如果你只想改變懸停方式,那麼爲什麼不在css中使用':hover'僞類? –

回答

7

問題是你指定一個字符串文字而不是變量作爲函數的參數,這會導致語法錯誤。

嘗試修改你的函數是這樣的:

<script> 
function changeDiv(id){ 
    document.getElementById(id).style.width="230px"; 
    document.getElementById(id).style.height="162px"; 
    document.getElementById(id).style.top="0px"; 
} 
</script> 

現在你可以調用它時傳遞任何你想要的ID的功能。

緩存的元素的引用性能:

出於性能考慮,你也可以緩存元素的變量,所以你不必看它在DOM三次:

<script> 
function changeDiv(id){ 
    var elm = document.getElementById(id); 
    elm.style.width="230px"; 
    elm.style.height="162px"; 
    elm.style.top="0px"; 
} 
</script> 

同時修改多個元素:

要同時修改多個元素,你可以調用函數多次用不同的參數:

onmouseover="changeDiv('image_1'); changeDiv('image_2');" 

或者你也可以改變函數取字符串數組元素的ID。

<script> 
function changeDivs(ids){ 
    for(var i = 0, len = ids.length; i < len; i++) { 
    var elm = document.getElementById(ids[i]); 
    elm.style.width="230px"; 
    elm.style.height="162px"; 
    elm.style.top="0px"; 
    } 
} 
</script> 

然後,您可以調用它像這樣:

onmouseover="changeDivs(['image_1', 'image_2'])" 
+0

不太確定理解,我使用這個腳本來一個特定的標識符?如果我有6個 – TommyDBrown

+0

@ user971474在其他div的鏈接中,您會給出另一個id:'onmouseout =「defaultDiv('image_2')」' – Teemu

+0

@ user971474我已經更新了示例,並附有關於如何使用處理多個元素。 –

0

在功能屬性必須是VAR而不是字符串,你必須把這種無功 例如

function myfunc(d){ //d is varble 
alert(d); 

}

+1

請在您的答案中添加一個代碼示例,以便更容易理解。 –

0

試試這個...

<a href="#" > 
    <div id='image_1' onmouseover="changeDiv('image_1')" onmouseout="defaultDiv('image_1')" style="width:100px; height:18px; border-style:ridge;"> 
    Home 
    </div> 
</a> 

如果您只是想在鼠標懸停時顯示指針。
**添加DIV邊框border-style:ridge用於測試...
**爲您的標籤創建標識。

這個JS腳本

function changeDiv(IDS){ 
     document.getElementById(IDS).style.width="230px"; 
     document.getElementById(IDS).style.height="162px"; 
     document.getElementById(IDS).style.top="0px"; 
    }