HTML不会使用必需的参数调用javascript函数

时间:2014-03-01 11:55:05

标签: javascript html xmlhttprequest

我从HTML文件调用的JavaScript无法正常工作。

以下是来自html文件的代码:

<li><a href="#" class="decorNavi" onclick ="xmlRequest('about')" >ABOUT</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();
}

任何人都可以解释我的错误吗?请记住,我是初级网页设计师,对于蹩脚的问题感到抱歉。

6 个答案:

答案 0 :(得分:0)

在你从HTML调用javascript时,必须将其定义为String。所以请用这样的引号括起来:

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

就像你做的那样,about应该是一个JS变量,所以它是未定义的。

答案 1 :(得分:0)

我很确定您收到了错误,因为 about 未定义。它不应该是一个字符串?

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

答案 2 :(得分:0)

你混淆了它们的变量和字符串represantations,这是一个更正的版本

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

所以现在你传递一个字符串作为参数

function xmlRequest(target){

        var targetClick;

        //here you say the string argument now is called targetClick
        targetClick = target;

        if (window.XMLHttpRequest) {

            xmlRequest = new XMLHttpRequest();
        }

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

        //in this line you concatinate the variable with another string, result is a string so you dont need to quote the variable, this wouldnt work
        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();
}

你需要在网络服务器上运行它,当使用“file://”protocoll你会得到一个交叉来源错误,另外url需要在同一个主机上

答案 3 :(得分:0)

targetClick现在是变量,它不是字符串所以你应该做

xmlRequest.open("GET", targetClick+".html?="+Math.random() , true);
//---should be without quotes--^

而不是

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

答案 4 :(得分:0)

您无法使用XmlHttpRequest加载本地文件。将这些文件放在本地Web服务器中。浏览器不允许这样做,因为使用这种方式,远程站点可以访问您的本地文件,这是不允许的。

答案 5 :(得分:0)

您是否定义了约会对象?或者你想要给这样的字符串:

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

请注意使用''而不是xmlRequest(about)调用xmlRequest('about')。