2016-10-13 79 views
-4

是否可以更改某個懸停在另一個特定項目上。更改懸停javascript的鏈接顏色只有

例如:

<li> 
    <a href="#">test</a> 
</li> 

JS

var list = document.getElementById('li'); 
var link = document.getElementById('a'); 

list.onmouseover = function() { 
    link.style.color = "#8080ff"; 
} 

如果我將鼠標懸停在li項目我想a標籤中的文本改變,但是這個代碼不工作。

我不能使用CSS或jQuery庫。

http://jsfiddle.net/Nt8Pq/40/

+3

爲什麼你不能使用CSS?另外,我建議使用事件監聽器。 – evolutionxbox

+3

那些不是'id's,那些是元素類型。如果JavaScript不起作用,那麼第一種方法是向Google提供您正在使用的方法來嘗試找出*爲什麼*它不起作用。 –

+0

@evolutionxbox解釋起來真的很複雜。 –

回答

3

你的代碼看起來與IDS的元素,你有沒有標識。您需要通過標籤名稱選擇它們並在集合上循環。比你需要找到集合中的錨點。

var menu = document.getElementById("menu"); 
 
var lis = menu.getElementsByTagName("li"); 
 

 
for (var i = 0; i < lis.length; i++) { 
 
    var li = lis[i]; 
 
    li.addEventListener("mouseover", function() { 
 
    this.getElementsByTagName("a")[0].style.color = "#8080ff"; 
 
    }); 
 
    li.addEventListener("mouseout", function() { 
 
    this.getElementsByTagName("a")[0].style.color = "#000000"; 
 
    }); 
 
}
<ul id="menu"> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
</ul>

在這到底是很多的代碼來實現

ul li:hover a { 
    color : "#8080ff"; 
} 

所以你可以只注入CSS規則,如果你不能夠真正樣式添加到頁...

var sheet = window.document.styleSheets[0]; 
 
sheet.insertRule('#menu li:hover a { color: #8080ff; }', sheet.cssRules.length);
<ul id="menu"> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
    <li> 
 
    <a href="#">test</a> 
 
    </li> 
 
</ul>

+0

這很酷。我不知道你可以在這樣的表格中插入規則。 – ThisClark

0

這可以通過一些簡單的HTML事件屬性和JavaScript來實現。

<li> 
<a href="#" onmouseover="this.style.color='red'" onmouseout="this.style.color='blue'">test</a> 
</li> 

HTML Event Attributes

0

如果你想用JS做到這一點,這裏就是答案。但就像之前說的,你不應該做這種方式:

<li id="list"> 
<a id="link" href="#">test</a> 
</li> 

var list = document.getElementById('list'); 
var link = document.getElementById('link'); 

http://jsfiddle.net/Nt8Pq/45/

0

假設你不能修改CSS或網頁的來源,你與一個JavaScript只停留文件,你想修改網頁的某些功能,那麼這種方法將工作:

一個警告是你必須使用document.getElementsByTagName('li')索引返回一個數組。例如,如果您始終需要第一個元素,則可以將此索引硬編碼爲零。否則,你需要遍歷集合尋找你想改變的集合。

最後,您可以在找到所需列表項後修改firstChildElement的樣式。

var li = document.getElementsByTagName('li')[0]; 
 

 
li.onmouseover = function() { 
 
    li.firstElementChild.style.color = "#F00"; // red 
 
} 
 

 
li.onmouseout = function() { 
 
    li.firstElementChild.style.color = "#000"; // black 
 
};
<li> 
 
    <a href="#">Mouse over me.</a> 
 
</li>

0
var nodesArray = document.getElementById('myID').getElementsByTagName('a'); 
for (var i = 0; i < nodesArray.length; i++) { 
    nodesArray[i].style.color = 'red'; 
} 

可能你會發現在這個環節您的解決方案: - https://ubuntuforums.org/showthread.php?t=1692280