【发布时间】:2017-12-20 23:35:42
【问题描述】:
目前我正在自学一些 HTML、CSS 和 JavaScript。 我无法理解函数的使用。
我在另一个 div 中有一个 div style="display: none"。当用户用鼠标进入第一个 div 时,第一个 div 的“style.display”被设置为“block”。当他离开时,第二个 div 的“style.display”再次设置为“none”。 现在的问题是一个函数应该对所有这种类型的 div 执行此操作。 HTML 看起来像这样:
<table>
<tr>
<td>
<div class="box box2" onmouseenter="show(this)" onmouseleave="hide()">
<b>HTML</b>
<div class="expl expl2" style="display:none" id="test">
<ul>
<li><b>Software</b></li>
<li><i>HTML</i></li>
<li>HTML, CSS, JavaScript...</li>
</ul>
</div>
</div>
</td>
<td>
<div class="box box2" onmouseenter="show(this)" onmouseleave="hide2()">
<b>HTML</b>
<div class="expl expl2" style="display:none" id="test2">
<ul>
<li><b>Software</b></li>
<li><i>CSS</i></li>
<li>HTML, CSS, JavaScript...</li>
</ul>
</div>
</div>
</td>
</tr>
</table>
JavaScript 目前看起来是这样的:
function show(x){
x = document.querySelector('.expl').style.display ="block";
}
我不知道如何正确使用“this”,但我在这里尝试过,因为它似乎对我来说是正确的,但也许我完全错了。我希望能够根据需要向表中添加尽可能多的 div,但不更改函数。目前,如果我在外部 div 中的任何一个上“mouseenter”,第一个 div 内部的唯一 div 会获得正确的“style.display”。
这个想法是朝着正确的方向发展还是我的方法是错误的?
【问题讨论】:
-
只使用
this.style.display="block";而不使用querySelector。show()函数的最终代码x=this.style.display="block";。 -
在你的显示函数中尝试把这个:x.querySelector('.expl').style.display ="block";而不是当前存在的。
-
另外,为了解释这里发生的事情......通过将“this”作为参数传递,您实际上是在传递该html标签的对象。在你的情况下,它是 DIV。使用此对象,您只能访问/更改该 DIV 标记的属性。
-
感谢您的解释。它帮助我理解了“this”的用法。
标签: javascript html