【问题标题】:Alternative to using search or indexOf替代使用 search 或 indexOf
【发布时间】:2023-03-16 09:00:01
【问题描述】:

与我的问题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 都将被触发。我做错了什么?

【问题讨论】:

    标签: javascript conditional


    【解决方案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 的标准函数,所以如果您之前没有在某处声明它,那将是另一个问题。

    【讨论】:

    • 非常感谢。我要试试这个。我当然可以使用 document.write?
    • 对,这不起作用。我在最后一个 } 上收到“非法字符”错误?
    • @Kiz:好的,我已经编辑了答案,再试一次。从 jsFiddle 复制代码通常会在代码末尾留下一个 Javascript 不喜欢的不可见字符。我不知道为什么,这很烦人。不过,它现在应该可以工作了。
    • 谢谢老兄,真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多