javascript - 当我创建一个函数时,每个 li 在 click 函数中单击,然后 li click 每次都循环运行。如何防止循环点击

标签 javascript html

请先点击input,点击不同的li,然后查看console。

<h1>
Please first click on input and click on different diffrent li and the see console. 
</h1>
<div class="select_option"  id="select1">
      <input
        type="text"
        name=""
        placeholder="Select here..."
      />
      <ul>
        <li>Level 1</li>
        <li>Level 2</li>
        <li>Level 3</li>
        <li>Level 4</li>
        <li>Level 5</li>
        <li>Level 6</li>
        <li>Level 7</li>
      </ul>
    </div>

jS

Please see JSfiddle link

https://jsfiddle.net/wq8La65n/2/

最佳答案

您可以尝试使用命名函数作为事件处理函数,如下所示。

document.querySelector('#select1').onclick = function(e){
  var ul_li = document.querySelectorAll("#select1 ul li");
  ul_li.forEach(function(li_click) {
    li_click.addEventListener("click", clickHandler);
  });
}
function clickHandler(e){
  console.log(e.target.textContent);
}
<h1>
Please first click on input and click on different diffrent li and the see console. 
</h1>
<div class="select_option" id="select1">
  <input
    type="text"
    name=""

    placeholder="Select here..."
  />
  <ul>
    <li>Level 1</li>
    <li>Level 2</li>
    <li>Level 3</li>
    <li>Level 4</li>
    <li>Level 5</li>
    <li>Level 6</li>
    <li>Level 7</li>
  </ul>
</div>

关于javascript - 当我创建一个函数时,每个 li 在 click 函数中单击,然后 li click 每次都循环运行。如何防止循环点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764890/

相关文章:

javascript - 如何在 Ionic 2 中动态创建具有特定类的模态?

php - Mysql为变量赋值并回显它

html - 使用 CSS 将单一字体应用于整个网站

javascript - 在 div 中仅添加某些输入

javascript - jQuery:使字符串中的字母闪烁

javascript - 使用 vanilla Javascript 将多个 Canvas 合并为一个(将其导出)

javascript - CSS - 最大高度不适用于打印图像

javascript - 当存在多个元素时,单击一次更新值

html - 控制 HTML/CSS 列的内容

html - 当我在 IE6 中最小化时内容中断