以编程方式单击 li 元素 JavaScript

Click li element JavaScript Programmatically

以编程方式(控制台)单击 li 元素“过去 30 天

<div class="ranges">
      <ul>
        <li>Today</li>
        <li >Yesterday</li> 
        <li>Last 7 days</li>
        <li>Last 30 days</li>
        <li class="">This month</li>
        <li>Custom Range</li>
    </ul>
  </div>

我试了很多方法都失败了

喜欢。

$('#Last 30 days').trigger('click');
$('#Last 30 days').click();

我是新来的 JavaScript 请帮助我

根据里面的HTML触发点击

let listItems = document.querySelectorAll('.ranges li');

listItems.forEach((item, index) => {
  item.addEventListener('click', (event) => {
     alert(`${event.currentTarget.innerHTML} item was click`);
  });
  if (item.innerHTML.indexOf('Last 30 days') != -1) {
      item.click();
  }
});
<div class="ranges">
    <ul>
      <li>Today</li>
      <li>Yesterday</li> 
      <li>Last 7 days</li>
      <li>Last 30 days</li>
      <li>This month</li>
      <li>Custom Range</li>
  </ul>
</div>

你这里的东西看起来像 jQuery(或模仿 jQuery 的东西)——不纯粹、自然 JavaScript。我提到这一点只是为了完整性和正确标记。

也就是说,假设您确实加载了 jQuery,这是失败的,因为您的选择器没有匹配任何内容。 $('#...') 按 ID 匹配 DOM 个元素。您没有任何身份证件。这会起作用:

<div class="ranges">
  <ul>
    <li>Today</li>
    <li >Yesterday</li> 
    <li>Last 7 days</li>
    <li id="target">Last 30 days</li>
    <li class="">This month</li>
    <li>Custom Range</li>
  </ul>
</div>
<script>
  $('#target').click();
</script>

CSS 不按内容寻址元素,jQuery 也不。你可以找到一种方法来实现它,但它会非常低效(这就是为什么它不是内置的)。如果您有选择,最好只识别每个 <li>.

您也可以通过 class 定位:$('.classname')。但是,虽然按 ID 定位通常只会命中一个元素,但按 class 定位会命中所有匹配元素。

我还注意到您似乎没有对 <li> 元素上的 click 事件附加任何操作,因此我不确定您是否会注意到点击事件是成功的,除非你的情况比你描述的更多。

尝试

myLiElement.click();

myLiElement.click();

// this is for TEST
function clicked() { console.log('clicked!') }
<div class="ranges">
  <ul>
    <li>Today</li>
    <li>Yesterday</li>
    <li>Last 7 days</li>
    <li id="myLiElement" onclick="clicked()">Last 30 days</li>
    <li class="">This month</li>
    <li>Custom Range</li>
  </ul>
</div>