php içinde javascript

3 Cevap php

Aşağıdaki kod benim için çalışmıyor

<body onload = "<?php 
foreach($arr as $a){
echo "<script language = javascript> popup_show(\''.$a.'\', \'popup_drag\', \'popup_exit\', \'screen-top-left\', 20,  20) <script>"; 
}
?>" >

Ben bile bir uyarı ile bu çalıştı.

<body onload = "<?php 
foreach($arr as $a){
echo "<script language = javascript> alert('Hello') <script>"; 
}
?>" >

Hatta bu işe yaramadı.

Ben dizi $ arr tüm değerleri için popup_show işlevini çağırmak gerekiyor.

Herhangi bir yardım için teşekkür ederiz. Ben gerçekten takdir ediyorum.

3 Cevap

Bir olay işleyicisi (örneğin onload = "") içine Javascript kodu koyarak, HTML komut dosyası etiketleri eklemek gerekmez.

Yani sadece ihtiyacınız:

<body onload = "popupshow(...)">

Tam bir örnek olacaktır:

<body onload = "<?php 
foreach($arr as $a){
  echo "popup_show(\''.$a.'\', \'popup_drag\', \'popup_exit\', \'screen-top-left\', 20,  20)"; 
}
?>" >

Bu varlık çıkışı bittiğinde geçerli HTML değil, çünkü başarısız:

<body onload="<script language = javascript> alert('Hello') <script>">

Edit: Ben tamamen @Justin Johnson teşviki dayanarak benim cevap yeniledi

JavaScript ile çalışmak için PHP kullanırken, ben en kısa sürede yerli JavaScript taşımak için çalışın. Aksine PHP echo karmaşık JS tablolar çalışırken daha, JS veri geçen ve işini yapmasına izin deneyin.

Ayrıca, HTML olayını kullanmak kötü formu olarak kabul edilir (onload, 'onclick', vb) bağlıyor. Bu IE en attachEvent ve W3 en addEventListener kullanarak nesneye olay eklemek daha iyidir.

<script type="text/javascript">
   // Store PHP array as JavaScript array in JS variable
   var messages = <?php echo json_encode($arr) ?>; // echos ["...","..."] etc.

   function trigger_popups(){
     for(var i = 0; i < messages.length; i++){
       popup_show( messages[i], 'popup_drag', 'popup_exit', 'screen-top-left', 20,  20);
     }
   }

   if(window.attachEvent)
      window.attachEvent('onload', trigger_popups); // IE
   else
      window.addEventListener('load', trigger_popups, true); // Other Browsers
</script>

Sen geçersiz HTML yapıyolar. Sen başka bir HTML öğesinin niteliğine (aslında, ya da herhangi bir öğesi) bir script elemanı yerleştirmek mümkün değil (bu durumda, body).

<!-- This is not valid! -->
<body onload = "<script language = javascript> alert('Hello') <script>">

Olay nitelikler sadece javascript sadece alır. Yani, böyle bir şey yapabileceğini

<body onload = "alert('Hello')">

Ve bu işe

JavaScript verilerin bir dizi komutlar kurmak istiyorum gibi görünüyor beri, bu yaklaşım önerebilir

<html>
<head>
  <script type="text/javascript">

  onload = function()
  {
  <?php 
    foreach($arr as $a)
    {
      echo "    popup_show('$a', 'popup_drag', 'popup_exit', 'screen-top-left', 20,  20);\n"; 
    }
  ?>
  }
  </script>
</head>
<body>
</body>
</html>