gpt4 book ai didi

javascript - 如何使 javascript 与使用 ajax 加载的 htm 一起工作

转载 作者:行者123 更新时间:2023-12-03 08:44:02 25 4
gpt4 key购买 nike

这应该是非常简单的,但我无法理解它,并且希望得到任何帮助。

我有 php 主页,底部有一些 JavaScript。该脚本所做的只是在加载窗口时调用一个函数,并回显导航,这非常有效。

问题是当 nav.已填充,主页上的 javascript 无法与其交互。

//Ajax that loads the nav
window.onload = function(){
function loadContent(where,what) {

if (window.XMLHttpRequest){
var xmlhttp = new XMLHttpRequest();
} else {
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById(where).innerHTML = xmlhttp.responseText;
}
}

xmlhttp.open('GET', what,true);
xmlhttp.send();
};

//the nav function is called directly under it

loadContent('navigator','include/navigation.php');

//after the above is loaded, any javascript written to call an element from the loaded html does not work.

};

navigation.php 仅包含一些要回显的 html,这也非常有效。

echo'
<ul class="nav navbar-nav navbar-right animate animated fadeInDown">
<li class="nav-item"><a href="#">Explore</a></li>
<li class="nav-item"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Select Country<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Worldwide</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">USA</a></li>
<li><a href="#">UK</a></li>
<li><a href="#">Nigeria</a></li>
<li><a href="#">Ghana</a></li>
<li><a href="#">Kenya</a></li>
<li><a href="#">South Africa</a></li>
</ul>
</li>
<li class="nav-item"><a href="#">Calender</a></li>
<li class="nav-item"><a href="#" data-toggle="modal" data-target="#login" id="loginbutton">Log In</a></li>
<li class="nav-item"><a href="#" id="logout">Log Out</a></li>

'

现在我的困境是上面的内容已经加载了。我在 window.onload 函数中编写的任何 JavaScript 都不适用于上面的任何元素。我很感激任何帮助。请使用 vanilla js,所以不要使用 jquery。谢谢

最佳答案

我可以看到很多帖子推荐xmlhttp.readyState == 4 && xmlhttp.status == 200 。但经过大量尝试后,它未能可靠地加载内容。然后使用firebug我发现显示内容时总是存在一个OK标志,所以我尝试了xhr.statusText === "OK"而且每次都能可靠地工作。然后到w3网站,我发现只有在加载内容后才会给出OK标志,就像xmlhttp.readyState == 4 && xmlhttp.status == 200一样。在MSDN论坛上,我检查了他们的方法,他们也使用了xhr.statusText === "OK" 。我不知道为什么,但这对我来说是最有效的。这是更多代码:

var d=document.getElementById("clicks");

var ajaxCall = function() {
var d=document.getElementById("clicks");
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost/JSON/text.txt", true);
xhr.send();
xhr.onreadystatechange = function () {
if(xhr.statusText === "OK") {
d.innerHTML = xhr.response;
} else {
d.innerHTML = "No";
}
}


};

d.addEventListener("click",ajaxCall,false);

关于javascript - 如何使 javascript 与使用 ajax 加载的 htm 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968459/

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