1

ここで私の質問に関連しています。

次のような JavaScript ステートメントがあります。

<script type="text/javascript">
var u1 = '%pu1=!;';

if (u1.search('NBSLoan|Accept') > -1)
{       
var pvnPixel = '<img src="someurl.com"/>';
document.writeln(pvnPixel);
}
if (u1.indexOf('NBSLoan|Refer') > -1)
{       
var pvnPixel2 = '<img src="someurl2.com"/>';
document.writeln(pvnPixel2);
}
if (u1.indexOf('DeBSLoan|Accept') > -1) {
var pvnPixel3 = '<img src="someurl3.com"/>';
document.writeln(pvnPixel3);    
}
</script>

変数u1が次の値のいずれかを含む可能性があるマクロであるとします。

NBSLoan|Accept|PPI+No|48Months
NBSLoan|Refer|PPI+No|48Months
NBSLoan|Accept|PPI+No|48Months
NBSLoan|Refer|PPI+No|48Months

また、最後の部分 (48 か月) が変更される可能性があることに注意してください。文字列の最初の部分のみをチェックする JavaScript ステートメントをどのように記述すればよいでしょうか? つまり、「NBSLoan|Accept」などであるかどうか。

上記のステートメントを JSFiddle に入れると、はい、機能しますが、(ライブでは) これが機能しないことを保証するので、このステートメントを記述する他の可能性を探っています。次のようなことができますか?

if (u1.search(/NBSLoan|Accept/)? これはパターンマッチングでも適切に機能しますか? 現時点では、if u1is equal to NBSLoan|Accepturl1 と url2 の両方が発生しています。私は何を間違っていますか?

4

1 に答える 1

1

パラメータは'sで区切られている(区切られている)ので、次のよう|に' sで分割し、|それらの間のビットをチェックできます。

var u1 = '%pu1=!;';
var u1Split = u1.split("|");

if (u1Split[1] == "Accept") {
    var pvnPixel = '<img src="someurl.com"/>';
    document.writeln(pvnPixel);
} else if (u1Split[1]  == "Refer") {
    var pvnPixel2 = '<img src="someurl2.com"/>';
    document.writeln(pvnPixel2);
} else if (u1Split  == "Accept" && u1Split[0] == "DeBSLoan") {
    var pvnPixel3 = '<img src="someurl3.com"/>';
    document.writeln(pvnPixel3);
}

それでうまくいくかどうか教えてください。また、writelnこれはの標準関数ではないdocumentため、以前にどこかで宣言していない場合は、別の問題になります。

于 2012-05-23T12:06:38.937 に答える