2015-09-24 2 views
0

Я пытаюсь иметь разные события onload для разных параметров. Например: если моя переменная $ var == 1 запускает одно событие window.onload, а если переменная $ var == 2, то другое событие window.onload вызывает тигр. Но мой код не работает. Я принимаю значение переменной из скрытого ввода с помощью id='alert' Есть ли другой способ сделать такой вид кодирования и что я здесь делаю неправильно?
Thx ребятаРазличные события window.onload в выражении IF

Вот мой код

JavaScript:

<script type="text/javascript"> 

      function Onload(){ 

      var variable=document.getElementById("alert").value; 

      if(variable.value=="1"){ 

       window.onload = function() 
       { 
        swal({ 
        title: "Example", 
        text: "Example123!", 
        type: "success", 
        showCancelButton: false, 
        confirmButtonClass: 'btn-success', 
        confirmButtonText: 'Close' 
        }); 
       }; 

      } 
      if(variable.value=="2"){ 
       window.onload = function() 
       { 
        swal({ 
        title: "Example", 
        text: "Example1234", 
        type: "error", 
        showCancelButton: false, 
        confirmButtonClass: 'btn-danger', 
        confirmButtonText: 'Close' 
        }); 
       }; 
      } 
      if(variable.value=="3"){ 

       window.onload==function(){ 

        false; 

       } 

      } 

      }  

</script> 

HTML

<body onLoad='Onload();'> 
<input type='hidden' id='alert' name='alert' value="<?php echo $alert; ?>"> 

ответ

1

Там нет необходимости использовать скрытый вход, когда вы можете поставить переменное право на <script> раздел с json_encode. Например:

<script type="text/javascript"> 
(function() { // grouping the code into IIFE to prevent global scope pollution 
    var modalIndex = <?php echo json_encode($alert); ?>; 
    var modalOpts = { 
    1: { 
     title: 'Example1', 
     text: 'Example1234', 
     type: 'success', 
     showCancelButton: false, 
     confirmButtonClass: 'btn-success', 
     confirmButtonText: 'Close' 
    }, 
    2: { 
     title: 'Example2', 
     text: 'Example2341', 
     type: 'warning', 
     showCancelButton: false, 
     confirmButtonClass: 'btn-danger', 
     confirmButtonText: 'Close' 
    }, 
    }; 
    if (modalIndex in modalOpts) { 
    window.onload = function() { 
     swal(modalOpts[modalIndex]); 
    } 
    } 
})(); 

Обратите внимание, что я 1) удалены Onload функцию, так что код будет выполняться немедленно; 2) сгруппированные опции в один объект; 3) сделал переходную проверку для существующего раздела конфигурации, установленного сервером.

+0

Он отлично работает, большое вам спасибо. – MadMaxa

0

window.onload является запуск вашего Onload функции. Присвоение его снова внутри этой функции не приведет к повторному запуску. Вместо этого, просто вызывать эти функции непосредственно:

function Onload() { 
    var variable = document.getElementById("alert").value; 
    if (variable == "1") { 

     swal({ 
      title: "Example", 
      text: "Example123!", 
      type: "success", 
      showCancelButton: false, 
      confirmButtonClass: 'btn-success', 
      confirmButtonText: 'Close' 
     }); 
    } 
    if (variable == "2") { 

     swal({ 
      title: "Example", 
      text: "Example1234", 
      type: "error", 
      showCancelButton: false, 
      confirmButtonClass: 'btn-danger', 
      confirmButtonText: 'Close' 
     }); 

    } 
    if (variable == "3") { 
     //just do nothing 
    } 

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