向表的每一行添加3个事件侦听器

时间:2018-02-08 21:51:16

标签: javascript html-table addeventlistener

首先,我创建一个容器来存储所有行。它是一个阵列。然后我遍历这个数组的每个元素,我想添加事件和函数的事件监听器 - 但它不起作用。后来我也添加了这些功能。作为一个检查,我画了所有行粉红色..这是有效的。所以循环运行并且存在行数组。

 <script>
    var rows = document.getElementsByTagName("tr");
    for (i=0; i < rows.length; i++) {
        rows[i].addEventListener("onmouseover", mouseOver);
        rows[i].addEventListener("onmouseout", mouseOut);
        rows[i].addEventListener("click", mouseClick);
        rows[i].style.color="pink";  //testing the loop and the array - works
    }       
    function mouseOver() {
        document.getElementByTagNameId("tr").style.color = "red";
    }    
    function mouseOut() {
        document.getElementByTagNameId("tr").style.color = "black";
    }    
    function mouseClick(){  
       // nothing here yet
    }
    </script>

1 个答案:

答案 0 :(得分:1)

我使用了错误的事件名称。不#34;开&#34;可以使用前缀。喜欢没有:onmouseover。相反:鼠标悬停事件。

<script>
var rows = document.getElementsByTagName("tr");
alert(rows.length); 
for (i=1; i < rows.length; i++) {
    rows[i].addEventListener("mouseover", mouseOver);
    rows[i].addEventListener("mouseout", mouseOut);
    rows[i].addEventListener("click", mouseClick);
    rows[i].style.color="pink";

}   

function mouseOver() {
    this.style.color = "red";
}

function mouseOut() {
    this.style.color = "black";
}

function mouseClick(){
    alert("Row was clicked!");
}
</script>