gpt4 book ai didi

javascript - 使用javascript for循环更改子元素的属性

转载 作者:行者123 更新时间:2023-11-28 02:43:30 24 4
gpt4 key购买 nike

我正在尝试制作一个简单的按钮事件,它设置一个颜色为 100 的类属性 td 100以内的元素<tr>元素白色。这些元素是在 Canvas 中创建的,并设置为使用鼠标移动事件更改单元格的背景颜色,就像一个简单的绘图板。我不确定如何选择每个 <td>元素单独将其所有属性设置回白色。我意识到这可能是非正统和多余的,但我需要在不久的将来为我自己的元素了解这一点。

<html>
<head>
<style>
#canvas { width: 500px;
border: 3px dashed #989898;
}
.blue { background-color: blue; }
.white { background-color: white; }
td { width: 3px; height: 3px; margin: 1px; padding: 1px; }
</style>
</head>
<body>
<table id = "myCanvas">
<caption>Draw Stuff Using Alt</caption>
<tbody id = "tbody"></tbody>
</table>
<button onclick="rectify()">The CLEARANCE BUTTON</button>

<script>
function makeCanvas()
{
var side = 100;

var bodyA = document.getElementById( "tbody" );

for ( var i = 0; i < side; ++i )
{
var row = document.createElement( "tr" );

for ( var j = 0; j < side; ++j )
{
var cell = document.createElement( "td" );
row.appendChild( cell );
}

bodyA.appendChild( row );
}

document.getElementById( "myCanvas" ).addEventListener(
"mousemove", detectMouse, false );
}
//////////////////////////////This is the function in question
function rectify()
{
var side = 100;

var row = document.getElementsByTagName( "tr" );

var cell = document.getElementsByTagName( "td" );

for ( var row = 0; i < side; ++i ){

row.childNodes( cell ).target;

for ( var j =0; j < side; ++i ){

for ( var j = 0; j < side; ++i ){

//if ( cell.attribute !== "white" ){

cell.setAttribute( "class", "white" );

//}
}
}
}
}
//////////////////////////////////////////////////////////////
function detectMouse( a )
{
if ( a.target.tagName.toLowerCase() == "td" )
{
if ( a.altKey )
{
a.target.setAttribute( "class", "blue" );
}
}
}
window.addEventListener( "load", makeCanvas, false );
</script>
</body>
</html>

最佳答案

您可以使用 document.querySelectorAll 简化它。这个函数你不需要嵌套循环。它只适用于一个循环,因为您可以选择 tr 元素内的所有 td 元素。

function makeCanvas() {
var side = 100;
var bodyA = document.getElementById( "tbody" );
for ( var i = 0; i < side; ++i ) {
var row = document.createElement( "tr" );
for ( var j = 0; j < side; ++j ) {
var cell = document.createElement( "td" );
row.appendChild( cell );
}
bodyA.appendChild( row );
}
document.getElementById( "myCanvas" ).addEventListener("mousemove", detectMouse, false);
}
function rectify() {
var side = 100;
var cells = document.querySelectorAll('tr > td');
for ( var cellNo = 0; cellNo < cells.length; cellNo++ ){
cells[cellNo].setAttribute( "class", "white" );
}
}
//////////////////////////////////////////////////////////////
function detectMouse( a ) {
if ( a.target.tagName.toLowerCase() == "td" ){
if ( a.altKey ){
a.target.setAttribute( "class", "blue" );
}
}
}
window.addEventListener( "load", makeCanvas, false );
#canvas { width: 500px;
border: 3px dashed #989898;
}
.blue { background-color: blue; }
.white { background-color: white; }
td { width: 3px; height: 3px; margin: 1px; padding: 1px; }
  <table id = "myCanvas">
<caption>Draw Stuff Using Alt</caption>
<tbody id = "tbody"></tbody>
</table>
<button onclick="rectify()">The CLEARANCE BUTTON</button>

关于javascript - 使用javascript for循环更改子元素的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com