0

次のコードを実行しましたが、何かが恋しいです。私にとっては問題ないようです。

window.onload = TitleFieldInit;
function TitleFieldInit() {
    var str = document.cookie.split("=")[1];
    var space = str.split("=")[1];
    space = space.split(";")[0];
    alert(space);
    // while( space.indexOf('%20' )+1) space = space.replace(/%20/,' ');
    if (document.cookie != "") {
        document.getElementById("TitleField").innerHTML = "Your Title is : " + space;
    }
}​

そして、FireFoxでエラーが発生しました。「スペースは未定義です」なぜですか?Chromeでは「UncaughtTypeError:Undefinedのメソッド「split」を呼び出せません」Thxが役立ちます。

4

1 に答える 1

2

このコードは、どの入力に対しても機能しません。

strは、による分割の結果の一部です。=つまり、=シンボルは含まれていません。

次に、その結​​果を再びで分割します=。これにより、もちろん1要素の配列が返され、str.split("=")[1]常に。になりますundefined

Cookieの値を読み取ろうとしているようですが、2番目.split("=")はまったく必要ありません。

ああ、そしてあなたは異なるブラウザで異なる結果を得ました、なぜならそれらは彼らのクッキーに異なるデータを含んでいるからです。

PS:代わりに、一度にすべてを置き換えるようにwhile( space.indexOf('%20' )+1) space = space.replace(/%20/,' ');書くことができます。space = space.replace(/%20/g,' ');

于 2012-04-07T20:50:37.577 に答える