0

我在其他答案中读到,为了将函数用作参数,需要编写它,whatever;而不是whatever()因为这个 las 选项“调用”函数。但是,如果我需要指定所述函数的参数怎么办?我举个例子:

我有这个功能来替换一些内容:

function navigate(content) {
var card = document.getElementById('informationdiv');
card.innerHTML = content;
} 

然后我有另一个创建内容的函数:

function productsheet(article) {
    document.write(array_products[article].Name);
    document.write(array_products[article].Number);
    document.write(array_products[article].Type);
    // and so on...

然后,我想像这样调用第一个函数:

navigate(productsheet(article));

而不是进行 innerHTML 替换,它只是productsheet(article)覆盖其他所有内容。

正如我所说,我发现了类似的问题,解决方案是在productsheet没有的情况下通过(article),但在我的情况下,我需要 article 参数,所以productsheet知道要打印什么......

这里建议的方法是什么?

非常感谢你!

4

2 回答 2

3

如果我正确理解了您的问题,您需要将一个匿名函数传递给navigate并在其中调用您的productsheet函数:

navigate(function () {
    productsheet(article);
});

但是,我不确定您要达到什么目的……您可能想摆脱这些document.write调用并从中返回一个字符串productsheet,然后调用该函数而不是将其引用分配给innerHTML

card.innerHTML = content();
于 2012-11-06T11:53:26.587 回答
0

有很多更好的方法可以实现您想要的,但是以您的代码为起点,我将执行以下操作:

navigate(article);

function navigate(article) {
    var card = document.getElementById('informationdiv');
    card.innerHTML = productsheet(article);
}

function productsheet(article) {
    //here you would return a string that has the format as how you would like to display it
    return "... name, number, type ...";
}

同样,我认为您应该重新考虑整个方法并将此代码丢弃。

于 2012-11-06T12:15:10.743 回答