繁体   English   中英

javascript函数似乎未在调用

[英]javascript function doesn't seem to be calling

我正在创建一个AJAX动态搜索栏,它从数据库返回结果。 我发现打开调试器时,代码未进入函数handleSuggest() ,该函数设置了显示结果的div的内部html。 这是我的代码。

function getXmlHttpRequestObject(){
if(window.XMLHttpRequest){
    return new XMLHttpRequest();
}
else if (window.ActiveXObject){
    return new ActiveXObject("Microsoft.XMLHTTP");
}
else{
    alert("Your browser does not support our dynamic search");
}
}

var search = getXmlHttpRequestObject();

function ajaxSearch(){
if (search.readyState == 4 || search.readyState == 0){
    var str = escape(document.getElementById('searchBox').value);
    search.open("GET", 'searchSuggest.php?search=' + str, true);
    search.onreadystatechange.handleSearchSuggest();
    search.send(null);
}
}

function handleSearchSuggest(){
    if(search.readyState == 4){
        var ss = document.getElementById('ajaxSearch');
        ss.innerHTML = '';
        var str = search.responseText.split("\n");
        for(i=0; i<str.length-1; i++){
            var suggestion = '<div onmouseover="javascript:suggestOver(this);"';
            suggestion += 'onmouseout="javascript.suggestOut(this);"';
            suggestion += 'onclick="javascript:setSearch(this.innerHTML);"';
            suggestion += 'class="suggestLink">' + str[i] + '<div>';
            ss.innerHTML += suggestion;
        }
    }
}

function suggestOver(divValue){
    divValue.className = "suggestLink";
}

function suggestOut(divValue){
    divValue.className = "suggestLink";
}

function setSearch(x){
    document.getElementById('searchBox').value = x;
    document.getElementById('ajaxSearch').innerHTML = '';
}

问题在这一行:

search.onreadystatechange.handleSearchSuggest();

search.onreadystatechange需要分配一个回调函数。

将其更改为以下内容:

search.onreadystatechange = handleSearchSuggest;

请注意,这里没有调用handleSearchSuggest函数,因为onreadystatechange需要一个回调函数,而不是该函数的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM