使用javascript使用2个标识符改变元素的宽度
Changing width of element using javascript using 2 Identifiers
我在W3Schools上查看一个侧边导航栏的例子,很难理解Javascript是如何实现的。js意味着通过点击按钮打开侧边导航菜单。在下面的代码中,为什么需要将id mySidenav
添加到菜单div中?我认为通过getElementsByClassName
类sidenav
瞄准div是有意义的,但这没有任何作用。有人能解释一下为什么需要id
吗?我会感谢任何帮助,因为我学习js。
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Clients</a>
<a href="#">Contact</a>
</div>
下面是菜单的CSS:
.sidenav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
overflow-x: hidden;
transition: 0.5s;
padding-top: 60px;
}
和JS:
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
}
当你有像菜单这样的东西,每个页面上只有一个,你应该坚持使用ID。确保ID只匹配一次。如果您有多个行为相同的元素,则应该按类进行匹配。但是,如果您想按类匹配,我假设您尝试使用getElementsByClassName("sidenav")
。在这种情况下,您必须指定要获得哪个匹配,因为它将返回一个数组。正确的语法应该是getElementsByClassName("sidenav")[0]
我尝试在Tryit编辑器中更改它并将该行更改为
document.getElementsByClassName("sidenav")[0].style.width = "250px";
,它成功了。在这种情况下,您是否忘记在获取数组时使用索引?
两个选择器都可以,但是根据id选择元素更快。
在jQuery中,通过类或id选择比通过其他属性选择更快吗?尽管这个问题是关于jquery的,但如果可用的话,jquery会使用本地浏览器选择器(getElementById或getElementsByClassName)
相关文章:
- 使用元素的值与innerHTML
- 如何在模板聚合物中使用元素函数
- 选择不带选择器的元素,仅使用元素ID
- 聚合物:在不同的视图模型中多次使用元素
- Angular 指令似乎没有使用元素传入的选项执行
- JQueryHide()在按钮中使用元素时不会隐藏元素
- 如何使用元素's属性值,以针对jQuery中具有相同属性值的另一个元素
- 使用元素选择器向Object添加函数
- 如何在jquery的SWF对象插件中使用元素类名
- 在 jQuery 中使用元素属性的速记赋值
- SVG:<使用>元素嵌套在g中时不起作用(带小提琴!
- 如何在 motools 中使用元素方法变形或补间延迟或设置杜累
- 如何在 Javascript 中使用元素的 CSS 路径将 CSS 属性应用于元素
- 尝试使用元素ID访问对象值的本地javascript
- 我甚至可以在javascript中使用元素的名称吗
- 如何使用元素的id和getElementById在其他特定元素中获取元素
- 在 JavaScript 中使用元素作为哈希的键
- 如何在setInterval中使用元素中的值来设置间隔
- 为什么不在JavaScript中直接使用元素id作为标识符呢?
- 如何在javascript中初始化对象时使用元素名