0

私のプロジェクトにはポップアップシステムがあります。「addnews」などの名前で、追加するポップアップ コンテンツと、フォームを処理するために必要なスクリプトを認識します。完成してから今までずっと同じことをしてきました。今、場合によっては、別のことをしたいと思っています。

ここで、前の例の「addnews()」のように、同じ名前の JavaScript 関数を追加し、その関数が存在するかどうかを確認します。実行する場合は、標準的なことを行います。(1)

また、その名前の関数を変数として実行しても機能しないようです。(2)

var functionName = 'addnews';

if (typeof functionName == 'function') { // (1) typeof functionName = string
    window[functionName](); // (2) this doesn't work for me
} else {
    // Do something standard
}

function addnews() {
    // Do something special
}
4

2 に答える 2

3

このコードをドキュメントで使用し、完全にロードされていない場合、このコードの前に宣言されていないため、コードは関数addnews()を見つけることができません。

コメントのように:あなたは使用する必要があります

if (typeof window[functionName] == 'function') 
于 2013-02-10T00:18:06.507 に答える
0

これはそれを行います:

if (typeof eval(functionName) == 'function') { 
    eval(functionName+'()');
} else {
    // Do something standard
}

更新:これは、マイクの答えが機能しない場合にのみ使用してください(ただし)。彼が言ったように、evalはかなり危険です。

于 2013-02-10T00:17:38.127 に答える