这应该是很简单的,但是我不能绕着它的头,并且希望得到任何帮助。

我在底部有一些JavaScript的php主页。该脚本所做的全部工作是,它在加载窗口时调用一个函数,并回显导航,并且效果很好。

问题是,当导航。填充后,我在主页上的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均不适用于上述任何元素。我将不胜感激。使用香草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);

08-05 03:01
查看更多