仅更改悬停javascript上的链接颜色

Change link color on hover javascript only

本文关键字:链接 颜色 javascript 悬停      更新时间:2023-09-26

是否可以在悬停在另一个特定项目上时更改某个项目。

例如:

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

您的代码查找有id的元素,而您没有id。您需要通过标记名称来选择它们,并在集合上循环。然后你需要找到收藏中的锚。

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>

这可以通过一些简单的HTML事件属性和JavaScript来完成。

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

HTML事件属性

如果你想用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/

假设您不能修改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>

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