探索1979 发表于 2023-11-9 13:48

调用函数无法立即执行

本帖最后由 探索1979 于 2023-11-9 17:40 编辑

在myFunction()中调用monitorDomChange()没法立即执行到该函数体中,而是for完之

后再执行到该函数体中,请问如何解决
function myFunction() {
$(document).ready(function(){
    // 获取指定 ID 的元素
    const parentElement = document.getElementById('treeDemo');
    // 获取所有子元素
    const childElements = parentElement.children;
    // 遍历所有子元素
    for (let i = 0; i < childElements.length; i++) {
      // 判断当前元素是否为 li 标签
       if (childElements.tagName === 'LI') {//为什么不显示方括号,方括号里面有个i
      // 获取 li 标签的 ID 并赋值给 document.getElementById()
      const id = childElements.id;//为什么不显示方括号,方括号里面有个i
      // 在这里可以执行你需要的操作,例如打印 ID 或其他操作
      console.log(`Element with ID ${id+"_span"} found.`);
      const targetElement = document.getElementById(id + "_span");
      console.log(targetElement);
      // 模拟点击事件
      if (targetElement) {
          const event = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: unsafeWindow,
            interval: 5000 // Use the interval parameter here.
          });
          debugger;
          setTimeout(() => {
            monitorDomChange();
          }, 0);
          targetElement.dispatchEvent(event);
      } else {
          console.log('目标 ul 元素不存在!');
      }
      }
    }
});
}

function monitorDomChange() {
// 你的代码在这里,例如:
}

sai609 发表于 2023-11-9 13:55

import库,def函数,正文代码

探索1979 发表于 2023-11-9 14:55

sai609 发表于 2023-11-9 13:55
import库,def函数,正文代码

大佬什么意思 求解这个是油猴插件

我今天是大佬 发表于 2023-11-9 16:07

建议格式化代码后再来

探索1979 发表于 2023-11-9 16:53

我今天是大佬 发表于 2023-11-9 16:07
建议格式化代码后再来

已经格式化好,请大佬指导

ciker_li 发表于 2023-11-9 16:59

for (let i = 0; i < childElements.length; i++) {
      // 判断当前元素是否为 li 标签
      if (childElements.tagName === 'LI') {
      // 获取 li 标签的 ID 并赋值给 document.getElementById()
      const id = childElements.id;
      // 在这里可以执行你需要的操作,例如打印 ID 或其他操作
      console.log(`Element with ID ${id+"_span"} found.`);
      const targetElement = document.getElementById(id + "_span");
      console.log(targetElement);
      // 模拟点击事件
      if (targetElement) {
          const event = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: unsafeWindow,
            interval: 5000 // Use the interval parameter here.
          });
          debugger;
          setTimeout(() => {
            monitorDomChange();
          }, 0);
          targetElement.dispatchEvent(event);
      } else {
          console.log('目标 ul 元素不存在!');
      }
      }
}

for循环是i在变化,但是循环体内又没有用到i,所以应该是直接跳出for循环了

探索1979 发表于 2023-11-9 17:22

ciker_li 发表于 2023-11-9 16:59
for (let i = 0; i < childElements.length; i++) {
      // 判断当前元素是否为 li 标签
      if (chi ...

i 根据childElements.length这个循环

ciker_li 发表于 2023-11-9 18:01

探索1979 发表于 2023-11-9 17:22
i 根据childElements.length这个循环

for循环里哪里用到i了?

探索1979 发表于 2023-11-9 19:00

ciker_li 发表于 2023-11-9 18:01
for循环里哪里用到i了?

       if (childElements.tagName === 'LI') {//为什么不显示方括号,方括号里面有个i
      // 获取 li 标签的 ID 并赋值给 document.getElementById()
      const id = childElements.id;//为什么不显示方括号,方括号里面有个i

sgvvvv 发表于 2023-11-9 22:32

没懂LZ是想要实现什么效果
monitorDomChange为什么要放在setTimeout里面
页: [1] 2
查看完整版本: 调用函数无法立即执行