代码之家  ›  专栏  ›  技术社区  ›  whackamadoodle3000

一个简单的。click()在Javascript中不工作

  •  0
  • whackamadoodle3000  · 技术社区  · 7 年前

    我正在尝试使用Javascript单击div。我可以使用Jquery。使用选择元素后 QuerySelector XPath 和使用 .click() 在元素上,它实际上并没有点击div,什么也不做。

    document.querySelector('.GriddyLayout > div:nth-child(1)').click()
    

    我正在尝试的网站是 here . 出于某种原因,在Javascript控制台中运行上述代码并不是选择该选项。有人知道如何用JS点击这个按钮(div),使它真正点击吗?将对所有答案进行投票,并接受最有效/第一个答案。

    4 回复  |  直到 7 年前
        1
  •  3
  •   A. Wolff    7 年前

    您需要按特定的顺序触发一些事件。在javascript中,您可以使用:

    var targetNode = document.querySelector('.GriddyLayout > div:nth-child(1)');
    
    triggerMouseEvent(targetNode, "mousedown");
    triggerMouseEvent(targetNode, "mouseup");
    triggerMouseEvent(targetNode, "click");
    
    function triggerMouseEvent(node, eventType) {
      var clickEvent = document.createEvent('MouseEvents');
      clickEvent.initEvent(eventType, true, true);
      node.dispatchEvent(clickEvent);
    }
    
        2
  •  1
  •   404 Not Found    7 年前

    您可以通过使用普通JavaScript来实现这一点。

    var divs = document.getElementsByClassName("GriddyLayout");
     for(var i = 0; i < divs.length; i++){
      divs[i].addEventListener('click', function() {
      console.log('clicked' +"  "+this.innerHTML);
    });
    }
    
    function callClickEvents() {
    for(var i = 0; i < divs.length; i++){
      divs[i].click();
    }
    }
    
    setTimeout(function(){ callClickEvents() }, 100);
    
    // click nth element i.e 3rd (2+1)
    divs[2].click(); 
    console.log("Now click all divs");
    <div class="GriddyLayout">hello 1</div>
    <div class="GriddyLayout">hello 2</div>
    <div class="GriddyLayout">hello 3</div>
    <div class="GriddyLayout">hello 4</div>
                     .
    <div class="GriddyLayout">hello n</div>
        3
  •  1
  •   cdoshi    7 年前

    enter image description here 尝试以下操作: document.querySelector('.GriddyLayout > div:nth-child(1)').addEventListener('click', function() { console.log('clicked') })

        4
  •  1
  •   Optimizer    7 年前

    将选择器更改为 .GriddyLayout > div.SelectableTile:nth-child(1) . 您没有使用jQuery。

    使用javascript

    document.querySelector('.GriddyLayout > div.SelectableTile:nth-child(1)').addEventListener('click', function() {console.log('clicked');} );
    

    使用jQuery

    jQuery('.GriddyLayout > div.SelectableTile:nth-child(1)').click(function() { console.log('clicked');});