为什么javascript拒绝多次工作?

时间:2014-03-01 17:27:29

标签: javascript html

我有两个单独的链接调用相同的功能。它们用于将不同的外部html doc加载到主体的主体中。他们自己正常工作。但当一个文档加载时,另一个文档拒绝。男人有什么问题?

<li>
    <a href="#" class="decorNavi" onclick ="xmlRequest('about')" >ABOUT</a>
</li>
<li>
    <a href="#" class="decorNavi"  onclick ="xmlRequest('contactus')" >CONTACT US</a
</li>

脚本:

function xmlRequest(target) {

    var targetClick;

    targetClick = target;

    if (window.XMLHttpRequest) {

        xmlRequest = new XMLHttpRequest();
    } else {
        xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlRequest.open("GET", targetClick + ".html?=" + Math.random(), true);


    xmlRequest.onreadystatechange = function () {

        if (xmlRequest.readyState == 4 && xmlRequest.status == 200) {

            document.getElementById("midContainer").innerHTML = xmlRequest.responseText;
        }
    }

    xmlRequest.send();
}

3 个答案:

答案 0 :(得分:5)

你正在覆盖你的函数中的函数声明:

function xmlRequest(target) {

xmlRequest = new XMLHttpRequest();

它会触发一次,然后用xmlRequest替换该函数。将第二个命名为别的。

答案 1 :(得分:2)

正如Mike Robinson所说,你正在覆盖你的功能。为您的功能使用其他名称。就这么简单。

function xmlRequest(targetClick) {

    var xmlRequest; // xmlRequest is no more a global. 

    if (window.XMLHttpRequest) {
        xmlRequest = new XMLHttpRequest();
    } else {
        xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlRequest.open("GET", targetClick + ".html?=" + Math.random(), true);

    xmlRequest.onreadystatechange = function () {
        if (xmlRequest.readyState == 4 && xmlRequest.status == 200) {
            document.getElementById("midContainer").innerHTML = xmlRequest.responseText;
        }
    }

    xmlRequest.send();
}

JSbin:http://jsbin.com/kehaxexo/2/

答案 2 :(得分:1)

您的函数“xmlRequest”的名称和在其中定义的对象是相同的。将其改为别的东西。