带有方括号且没有添加事件侦听器的Javascript函数的行为不同

时间:2019-11-25 09:32:25

标签: javascript php xmlhttprequest

我注意到,当我尝试调用两个不同的函数时,如果使用方括号和不使用方括号编写,则它们的行为将有所不同。因此,仅当我编写方括号showTypes()时第一行才有效,而没有方括号showPrice的第二行才有效(showPrice()不起作用)。这怎么可能?

这两个函数都使用对服务器的http请求。

document.addEventListener("load", showTypes());
document.getElementById("work_type").addEventListener("change", showPrice);

这些功能:

function showTypes()
{
    let xmlhttp =  createXMLHttp();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var types_array = new Array();
            types_array = JSON.parse(this.responseText);

            putTypesToDropwdown(types_array, "work_type");
        }
    };
    xmlhttp.open("GET", "../php/functions.php?createOptions=true", true);
    xmlhttp.send();
}


function showPrice()
{        
    let type = document.getElementById("work_type").value;  

    let xmlhttp =  createXMLHttp();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("work_cost").innerHTML = this.responseText;
            document.getElementById("work_cost").value = this.responseText;
        }
    };
    xmlhttp.open("GET", "../php/functions.php?type=" + type, true);
    xmlhttp.send();
}

也许与我的xmlhttp请求有关?

0 个答案:

没有答案