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/)? 这甚至可以与模式匹配正常工作吗?目前正在发生的事情是 ifu1等于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 回答