javascript - 有没有办法在 javascript 中制作 onclick 事件函数而不在 html 代码中包含 onclick?
问题描述
我是一个初学者,所以如果我的问题很愚蠢,我很抱歉。
我在 HTML 中有一个无序列表和一个按钮,我想通过 javascript 使按钮显示或隐藏列表,但我试图避免将属性赋予代码onclick
中的按钮。HTML
var btn = document.getElementById("button");
btn.onclick = function(){
var ul = document.getElementById("ul");
if(ul.style.display=='none'){
ul.style.display='block'}
else{ul.style.display='none'}
}
<ul id=ul>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li>List item 5</li>
<li>List item 6</li>
</ul>
<input id="button" type="button" name="button" value="press me!" >
我在这里缺少什么,不能让它工作吗?只有当我将onclick
属性包含在其中并为其 onclick 事件HTML
创建一个函数时才能做到这一点,但从长远来看,这似乎不切实际。showhide()
解决方案
是的,你使用addEventListener
var btn = document.getElementById("button");
btn.addEventListener('click',function(){
var ul = document.getElementById("ul");
if(ul.style.display=='none') ul.style.display='block'
else ul.style.display='none'
});
<ul id="ul">
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li>List item 5</li>
<li>List item 6</li>
</ul>
<input id="button" type="button" name="button" value="press me!" >
推荐阅读
- angular - 如果使用 forRoot(),我应该在 @NgModule 装饰器中指定提供程序吗?
- iis - IIS 相当于 Apache 中的 Location 标签
- r - 是否有一个 R 函数可以根据最接近的给定值对数据帧进行排序?
- javascript - 设置道具默认值的最佳方法是什么?
- python-3.x - Pytest 断言函数在类外调用
- recursion - 为什么当我尝试在 codechef 中提交我的问题时,以下 DP 问题显示 SIGSEGV 错误?
- php - mail() 函数在 PHP 中不起作用
- xml - Delphi 10.2 SOAP WSDL 导入 - XML Mailformed
- kubernetes - 基于客户端 IP 的限制授权策略不适用于 Istio 和 Azure 应用程序网关
- r - 在 CrossTable 中找不到对象