¿Por qué este script nunca se ejecuta?

Tengo la siguiente declaración de JavaScript, que se ejecuta en Page Load:

La variable u1 se rellena con uno de los siguientes valores:

BBSLoan|Accept|PPI+No|60Months
BBSLoan|Refer|PPI+No|60Months
HSBSLoan|Accept|PPI+No|48Months
HSBSLoan|Refer|PPI+No|48Months

Me han informado que nunca se cumplirán las condiciones de las sentencias condicionales. ¿Es esto cierto? Por lo que puedo ver, yendo a cada una de las variables, el índice que será devuelto por indexOf is 0? A menos que me equivoque?

EDITAR: solo para aclarar, la variable 'u1' se completará dinámicamente con cualquiera de las 4 cadenas enumeradas anteriormente. los %pu1=!; es en realidad una macro que llenará este valor.

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

    if (u1.indexOf('BBSLoan|Accept') > -1) {
        var pvnPixel = '<img src="http://www.url1.com"/>';
        document.writeln(pvnPixel);
    }
    if (u1.indexOf('BBSLoan|Refer') > -1) {
        var pvnPixel2 = '<img src="https://www.url2.com;"/>';
        document.writeln(pvnPixel2);
    }
    if (u1.indexOf('HSBSLoan|Accept') > -1) {
        var pvnPixel3 = '<img src="https://www.url3.com;"/>';
        document.writeln(pvnPixel3);
    }
</script>

Gracias de antemano!

preguntado el 22 de mayo de 12 a las 17:05

Qué es var u1 = '%pu1=!;';? Si sustituye una de sus cadenas, funciona bien: jsfiddle.net/j08691/mDSgY/1 -

@ j08691 Exactamente mi punto. Edité mi publicación para decir que esta es una macro que completa el valor con una de las 4 cadenas anteriores. Puedo ver que funciona cuando los valores también se sustituyen, ¡por eso estoy confundido! -

¿Tu código de macro no funciona? Como lo demuestra jsFiddle, el código que ha publicado (menos el var u1 = '%pu1=!;'; chunk) funciona, por lo que tiene otro código en conflicto con este, o el código de la macro está fallando. -

3 Respuestas

EDITAR: solo para aclarar, la variable 'u1' se completará dinámicamente con cualquiera de las 4 cadenas enumeradas anteriormente. El %pu1=!; es en realidad una macro que llenará este valor.

Esta respuesta no es correcta. Se eliminará más tarde, pero se dejará para evitar que esta respuesta vuelva a aparecer.

var u1 = '%pu1=!;';

El valor de u1 es siempre '%pu1=!;', ya que lo declaras así.

contestado el 22 de mayo de 12 a las 17:05

No, en realidad esto es parte de una etiqueta de Floodlight de DoubleClick y ese valor se completa dinámicamente cuando se carga la página. `%pu1=!;1 es en realidad una macro que extrae cualquiera de los valores que enumeré anteriormente. Lo siento, debería haber dejado esto más claro. - zik

Apuesto a que la macro está fallando. Al menos, eso es lo que yo comprobaría primero. ¿Cuál es el valor de u1 si lo miras en tiempo de ejecución? - PescadoCestaGordo

@FishBasketGordo sí, eso es lo que pensé, pero las personas que podrían probar esto por mí dicen que no hay nada malo con la macro. - zik

Puedes probarlo tú mismo. Use Firebug o Chrome Developer Tools (o cualquier herramienta de desarrollo que proporcione su navegador de elección) y establezca un punto de interrupción. - PescadoCestaGordo

También puede ser que la macro esté funcionando bien, pero solo se está ejecutando después de que se ejecuta este script. - PescadoCestaGordo

Ok, finalmente conseguí que esto funcionara usando search en lugar de indexOf!

contestado el 23 de mayo de 12 a las 13:05

¿Tendría más sentido usar una declaración de cambio con un caso predeterminado o, como mínimo, proporcionar un "else" con un valor predeterminado?

¿Ha intentado poner una declaración de depuración después de configurar var u1, y paso a paso usando el depurador del cliente (Firefox, Chrome, IE, Safari, todos tienen "herramientas de desarrollador" integradas con la capacidad de recorrer el código js) para ver qué? el valor de u1 es?

contestado el 22 de mayo de 12 a las 18:05

Lamentablemente, no puedo hacer esto porque es parte de una etiqueta de DoubleClick Floodlight que se ejecuta al cargar la página. Por lo que puedo ver, la sintaxis es correcta, pero esto no se activa por algún motivo. - zik

¿Puedes console.log o alertar el valor? Conocer el valor cuando se carga la página lo ayudaría a determinar "por qué" las declaraciones no funcionan. - Matt

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.