0
function T(x){ return (x.textContent) ? function(y){ x.textContent = y; } : function(y){ x.innerText = y; }; }

T(nodeA)('string');
nodeText = T(nodeB);
nodeText('string');

変更(x.textContent)する(x.textContent !== undefined)とFirefoxで動作します。それ以外の場合、エラーは発生しませんが、何も起こりません。ファイアバグで検査すると、がT(node);返されることがわかりますがfunction()、これは私には困惑しています。

私はjavascriptを初めて使用しますが、これはバグである可能性があると思いますか?真か偽かしかないと思います。真で最初の関数を返す必要がありますが、どちらも返しません。誰かが理由を言うことができますか?

4

1 に答える 1

1

textContent指定されたノードのが空の文字列である場合、これは機能しません。これは''、と評価されfalseます。(typeof x.textContent !== 'undefined')そのため、代わりにプロパティの存在を確認する必要があります。

于 2012-06-03T05:59:47.337 に答える