簡體   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