请首先单击输入,然后单击不同的li和see控制台。

<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>



  S


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/

10-11 23:57
查看更多