1
我有一张桌子。JavaScript:元素style.display ='块'不起作用
- 在我的表格中,单元格有一个注释图标。
- 点击图标时,它应该消失,你应该能够看到一个textarea,用一个按钮退出它。
- 如果你点击那个按钮,评论图标应该再次显示。
我认为CSS重写JavaScript,因为控制台告诉我我有正确的元素来更改显示属性。这里的HTML,CSS和JavaScript我的工作:
function hideComment(){
this.parentNode.style.display="none";
this.parent.firstChild.style.display="block";
}
var exitButton = document.querySelectorAll(".exit-button");
for (var i = 0; i < exitButton.length; i++){
exitButton[i].addEventListener ('click', hideComment, false);
}
function addComment(){
this.style.display = 'none';
this.nextSibling.style.display = "block";
}
var displayComment = document.querySelectorAll(".fa-comment-o");
for (var i = 0; i < displayComment.length; i++){
displayComment[i].addEventListener('click', addComment, false);
}
.c-na-table textarea,
.c-na-table button{
display: none;
}
<p>This table enables users to leave a comment in one of the cells.</p>
<div class="table-three">
<table class="c-na-table">
<thead class="th-head">
<tr>
<td class="td-input"></td>
<td class="column-a-0c no-lite">Course 1</td>
<td class="column-b-0c no-lite">Course 2</td>
<td class="column-c-0c no-lite">Course 3</td>
<td class-"column-d">Comments </td>
</tr>
</thead>
<tbody>
<tr class="row-a">
<td class="td-input"><input type="checkbox"></input></td>
<td class="column-a-3">Specification 1</td>
<td class="column-b-3">Specification 1</td>
<td class="column-c-3">Specification 1</td>
<td class="column-d"><i class="fa fa-comment-o" aria-hidden="true"></i><div id="ta-one">
<button class="exit-button">×</button>
<textarea row="4" col="20"></textarea>
</div></td>
</tr>
<tr class="row-b">
<td class="td-input"><input type="checkbox"></input></td>
<td class="column-a-3">Specification 2</td>
<td class="column-b-3">Specification 2</td>
<td class="column-c-3">Specification 2</td>
<td class="column-d"><i class="fa fa-comment-o" aria-hidden="true"></i><div id="ta-two">
<button class="exit-button">×</button>
<textarea row="4" col="20"></textarea>
</div></td>
</tr>
<tr class="row-c">
<td class="td-input"><input type="checkbox"></input></td>
<td class="column-a-3">Specification 3</td>
<td class="column-b-3">Specification 3</td>
<td class="column-c-3">Specification 3</td>
<td class="column-d"><i class="fa fa-comment-o" aria-hidden="true"></i><div id="ta-three">
<button class="exit-button">×</button>
<textarea row="4"col="20"></textarea>
</div></td>
</tr>
</tbody>
<tfoot class="tf-foot">
<tr></tr>
</tfoot>
</table>
</div>
可能更容易/最好使用'.hide'类,而不是增加你的'显示:none'规则的选择,然后让你的代码添加或删除'hide'类('这一点。 classList.add('hide')','this.classList.remove('hide');'等) –
使用'.parentNode'或'.parentElement'。在痛苦JS中,'parent'用于引用iframe中的子页面的父页面。 – zer00ne
ok,所以按钮的父页面消失了,这使得按钮(即。this)默认情况下消失了.'this.parent.firstChild.style .display =“block”'所以这是同一个父项,但父项中的任何内容仍然是'none'。这就是说,如果你真的有'父母'的工作.... – zer00ne