0

我正在寻找在 JavaScript 中创建一个函数来操作项目列表。该列表是由 CMS 生成的,我只能使用 JavaScript 来影响它。

假设列表如下:

<ul id="someUniqueID"> 
  <li class="genericClass" id="uniqueGeneratedID"><a href="link1.htm">Link</a></li>
  <li class="genericClass" id="uniqueGeneratedID2"><a href="link2.htm">Link 2</a></li> 
  <li class="genericClass" id="uniqueGeneratedID3"><a href="link3.htm">So on and so forth</a></li> 
</ul> 

现在,我知道 JavaScript 提供了使用

document.getElementById('uniqueGeneratedID').onmouseover = doSomething(); 
function doSomething(){ //code here } 

我想做的是获取所有这些 li 并为它们中的每一个分配一个 onmouseover 函数,而不具体标识每个 li 元素。

我一直是这样的

var x = document.getElementsByTagName('li'); 
var changeId = new Array(); 
for (var i = 0; i < x.length; i++)
{
    var j = 0; 
    changeId[j] = x[i].id;
    j++; 
} 
function mouseOver() {
for(var y = 0; i < x.length;  y++){
        document.getElementsById(changeId[y]).onmouseover = test(changeId[y]); 
    }    
}
function test(storeContent){
    document.getElementsById('storeContent').innerHTML = 'printing' + testId; 
}
mouseOver();

当然,问题是这实际上并没有为 ID 生成任何类型的鼠标悬停事件。有没有一种方法可以动态分配所有 li 的 onmouseover 事件而无需生成

document.getElementsById('uniqueGeneratedID').onmouseover = doEvent(); 
document.getElementsById('uniqueGeneratedID2').onmouseover = doEvent(); 

ETC。?

感谢您的任何帮助或建议。

4

1 回答 1

1

一种快速而肮脏的方法是抓住父级<ul>并遍历其子级:

var ul = document.getElementById("someUniqueID"),
    lis = ul.getElementsByTagName("li");

for (var i = 0, l = lis.length; i < l; i++) {
    lis[i].onmouseover = function() {
        this.style.color = "red";
    };
}

示例:http: //jsfiddle.net/rttXQ/

于 2011-10-10T21:55:48.920 回答