Javascript将参数传递给函数

K.R*_*.R. 4 javascript parameter-passing

菜鸟问题:我有以下JavaScript函数.这工作正常但我不想硬编码字符串"Names"和"namesDiv".我想将它们作为参数传递给getItems().我该怎么做?

编辑:函数GetMsg()返回一个JSON对象:result.

HTML:

<input type="button" onclick="getItems(); return false;" value="Go"/>
Run Code Online (Sandbox Code Playgroud)

JS:

function getItems() {
   loadingMsg();
   GetMsg("Names", null, callback);
}

function callback(result, args){
   clearContainer();
   //do stuff
   document.getElementById("namesDiv").append(foo);
}

function loadingMsg(){
    clearContainer();
    // do stuff
    document.getElementById("namesDiv").append(foo);   
}

function clearContainer(){
    document.getElementById("namesDiv").innerHTML = "";
}
Run Code Online (Sandbox Code Playgroud)

ick*_*fay 5

对于其中一半,这是显而易见的; 你刚开始将参数传递给函数:

function loadingMsg(containerID) {
    clearContainer(containerID);
    document.getElementById(itemDiv).append(foo);   
}

function clearContainer(containerID) {
    document.getElementById(containerID).innerHTML = "";
}
Run Code Online (Sandbox Code Playgroud)

callback有点复杂.我们将它变成一个返回回调的函数.

function makeCallback(containerID) {
    function callback(result, args) {
        clearContainer();
        document.getElementById(containerID).append(foo);
    }
    return callback;
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以打电话makeCallback来获得回调.我们现在可以写getItems:

function getItems(itemType, containerID) {
   loadingMsg(containerID);
   GetMsg(itemType, null, makeCallback(containerID));
}
Run Code Online (Sandbox Code Playgroud)