0

これは本当に簡単だと思いますが、達成できないようです。私はこのスニペットを持っています...

var choice = location.href.split("?")[1].split("=")[1];

「choice」が空になるまで正常に動作し、その後、次のエラーがスローされます....

TypeError: location.href.split(...)[1] is undefined

これは、未定義の変数で分割を呼び出すことができないためだと理解しています。私の解決策は、変数を保存してから、完全な場合は分割するか、未定義の場合は無視することだと思います。

誰かが私にこれを手伝ってもらえますか?

4

3 に答える 3

3

このようにするのはあまりクールではありませんが、クエリ文字列にパラメーターが1 つしかないと予想される場合は、次のようにすることができます。

var choice = (location.href.split("?")[1] || '').split("=")[1];

クエリ文字列に設定されていないかのように取得choiceします。undedfined

于 2013-02-05T14:12:50.040 に答える
1

十分な情報がありませんが、最初の分割の 1 インデックスの属性 href が未定義であるか、最後の分割の 2 番目の項目が未定義です。

分割をいくつかのステートメントに分けます。

var choice;
var firstSplit = location.href;

if (firstSplit) {
    var secondSplit = firstSplit.split("?");
}
if (secondSplit[1]) {
    choice = secondSplit[1].split("=");
}

次に、最後の分割から返されたものを使用できます。

于 2013-02-05T14:02:28.360 に答える
0

クエリ文字列がある場合とない場合がある URL を分割しようとすると、この例外が表示されます。操作を試みる前に、クエリ文字列が存在することを確認する必要があります。

var choice;
var outerSplit = window.location.href.split('?');
var innerSplit;
if (outerSplit.length > 1) {
    innerSplit = outerSplit.split('=');
    if (innerSplit.length > 1) {
        choice = innerSplit[1];
    }
}

このタイプのクエリ文字列操作を頻繁に実行していることに気付いた場合は、この質問のような再利用可能な関数に投資することをお勧めします。

于 2013-02-05T14:10:46.380 に答える