gpt4 book ai didi

javascript 不会使用 XMLHttpRequest 找到 html/javascript 导入代码的 id/class

转载 作者:行者123 更新时间:2023-11-28 00:38:49 26 4
gpt4 key购买 nike

我正在为这个 petshop 软件网站构建一个搜索系统,问题是我搜索一个名字,然后将带有 XMLHttpRequest 的名字发送到执行查询的 php 页面,然后返回结果并显示在我的搜索页面,到这里就可以了。 php页面返回给搜索页面的信息是这样的:

<?php
$query = "selec ...
$queryName = mysqli_query...
while($fetchNames = mysqli_fetch_array...
?>
<a class="profile">
<div id="clientInfo"><?php echo $fetchNames[0]; ?></div>
</a>
<?php }
?>`

我尝试访问在 searchpage.php 上导入的 html 类 .profile:

`<script>
document.querySelector('.profile').addEventListener('click',function=(){
alert('js code works!');
});
</script>
</body>`

我试图在 while 循环结束后立即将其与 php 查询页面的结果一起导入,即使使用 window.onload=func... 它也行不通!

javascript 无法在导入的文档上运行,它看不到显示警报的类。我该如何解决这个问题?

提前致谢!

最佳答案

由于您拥有动态生成的元素,因此您需要使用 event delegation并定位页面加载时存在的元素,然后从那里开始工作。您没有在问题中提到任何父元素,所以我将定位 <body>在我的回答中,因为这个总是在页面加载时存在。

当您移动 eventListener 时在层次结构中,您需要忽略所需元素以外的点击。这可以通过 event.target 来实现 .contains() :

if (document.querySelector('.profile').contains(event.target)) { }

所以你的最终代码应该是这样的:

const body = document.querySelector('body');
body.addEventListener('click', function() {
if (document.querySelector('.profile').contains(event.target)) {
alert('js code works!');
}
})

以上确保当您点击动态生成的元素时您的 alert()将触发,但当您单击任何其他元素时它不会触发。

关于javascript 不会使用 XMLHttpRequest 找到 html/javascript 导入代码的 id/class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54797622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com