与我的问题here相关。
我的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/)
?这甚至可以与模式匹配正常工作吗?目前正在发生的事情是,如果u1
等于NBSLoan|Accept
,则url1和url2都被触发。我做错了什么?
答案 0 :(得分:1)
由于您的参数由|
分隔(分隔),我们可以拆分|
并检查它们之间的位,如下所示:
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
的标准函数,因此,如果您之前未在某处声明过,那么这将是另一个问题。