0

関数をパラメーターとして使用するには、この las オプションが関数を「呼び出す」ためwhatever;ではなく、記述する必要があるという他の回答を読みました。whatever()しかし、その関数のパラメーターを指定する必要がある場合はどうすればよいでしょうか? 例を挙げます:

一部のコンテンツを置き換えるこの機能があります:

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 に答える