javascript
  • conditional
  • 2012-05-23 4 views 1 likes 
    1

    Связано с моим вопросом here.Альтернатива использованию поиска или indexOf

    У меня есть заявление 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 запускаются. Что я делаю не так?

    ответ

    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, поэтому, если вы ранее не объявляли его ранее, это будет другой проблемой.

    +0

    Большое спасибо. Я попробую это. Я мог бы, конечно, использовать document.write? – zik

    +0

    Правильно, это не работает. Я получаю ошибку «незаконного символа» на последнем '}'? – zik

    +0

    @ Kiz: Хорошо, я отредактировал свой ответ, попробуйте еще раз. Копирование кода из jsFiddle часто оставляет вам невидимый символ в конце кода, который не нравится Javascript. Я понятия не имею, почему и это довольно раздражает. Однако это должно работать. –

    Смежные вопросы