Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用VANILLA JS向嵌套的Dom元素添加类_Javascript_Html_Css_Dom - Fatal编程技术网

Javascript 如何使用VANILLA JS向嵌套的Dom元素添加类

Javascript 如何使用VANILLA JS向嵌套的Dom元素添加类,javascript,html,css,dom,Javascript,Html,Css,Dom,这是我的简单代码,我希望当用户单击第一个单元格时,它将变成蓝色背景(仅单击的单元格)。 我认为唯一的问题是我不知道如何选择/引用特定的单元格,因为它是嵌套元素 **如果你能用“按标签名”来做,那就太好了 谢谢你的帮助 Html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="widt

这是我的简单代码,我希望当用户单击第一个单元格时,它将变成蓝色背景(仅单击的单元格)。 我认为唯一的问题是我不知道如何选择/引用特定的单元格,因为它是嵌套元素

**如果你能用“按标签名”来做,那就太好了

谢谢你的帮助

Html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
    <table>
        <tr>
            <td>Aviliable</td>
            <td>Aviliable</td>
            <td>Aviliable</td>
        </tr>
        <tr>
                <td>Aviliable</td>
                <td>Aviliable</td>
                <td>Aviliable</td>
        </tr>
        <tr>
                <td>Aviliable</td>
                <td>Aviliable</td>
                <td>Aviliable</td>
        </tr>
    </table>
   <script src="script.js"></script>
</body>
</html>
JS:


使用
event.target
选择要添加样式的单元格

var firstTableRow=document.getElementsByTagName(“tr”)[0];
firstTableRow.addEventListener('click',函数(事件){
event.target.classList.add('blue');
})

通过标记名获取元素效果很好。首先从文档中获取第一行(因此使用document.getElementsByTagName()),现在已经有了第一行,从那里只需要使用getElementsByTagName(您不想搜索文档,只需搜索已经获得的行)

var td=document.getElementsByTagName(“tr”)[0].getElementsByTagName(“td”)[0]
td.onclick=函数(){
td.classList.add(“蓝色”);
}
td{
边框:5px纯黑;
宽度:200px;
高度:200px;
}
蓝先生{
背景颜色:蓝色;
}

文件
可靠的
可靠的
可靠的
可靠的
可靠的
可靠的
可靠的
可靠的
可靠的

我想这对你有用

函数更改颜色(单元格){
var elems=document.queryselectoral(“th”);
[]forEach.call(元素,函数(元素){
//警惕(“你好”);
el.类列表。删除(“蓝色”);
});
cell.classList.add(“蓝色”);
}
.blue{
背景颜色:蓝色
}

1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
这应该只影响第一个单元格,或者用户单击的任何单元格?如果用户两次单击同一单元格,会发生什么情况?还是三次?
td {
    border: 5px solid black;
    width: 200px;
    height: 200px;
}

.blue {
    background-color: blue;
}
var td = document.getElementsByTagName("tr")[0].document.getElementByTagName("td")[0];

td.onclick = function () {
  td += "blue";
}