2017-04-20 54 views
0

的JavaScript:平變化不叫

function test(){ 
alert('onchange success'); 
} 

PHP + HTML:

<select id="mySelect" onchange="test();"> 
<?php 
$myRow = 1; 
for($i = 0 ; $i < 3 ; $i++){ 
    if($i == $myRow){ 
    echo("<option selected='selected'>$i</option>"); 
    } else { 
    echo("<option selected=''>$i</option>"); 
    } 
} 
?> 
</select> 

我的問題和質疑

爲什麼函數test()不會在PHP聲明選項被選中時調用?

附加信息:控制檯沒有錯誤。

+0

_「沒有錯誤顯示在控制檯」 _,除非你正在運行一個PHP腳本PHP將不會顯示在控制檯錯誤測試生成的PHP從命令行。如果您在討論Chrome開發工具控制檯(或其他瀏覽器中的類似工具),則會顯示JS錯誤/警告。 –

+0

是的,我的意思是@ emile-bergeron – Michael

+0

它沒有被調用,因爲Php是一種服務器端腳本語言。它甚至在JS甚至在瀏覽器中發生。 'onchange'回調沒有被調用,因爲它沒有改變。 –

回答

-1

$ myRow超出範圍(事實上,在PHP中根本沒有聲明代碼片段),因爲它是在標記之外聲明和定義的。

嘗試:

<script> 
    function test(){ 
     alert('onchange success'); 
    } 
</script> 

<select id="mySelect" onchange="test();"> 
<?php 
    $myRow = 1; 
    for($i = 0 ; $i < 3 ; $i++){ 
     if($i == $myRow){ 
      echo("<option selected='selected'>$i</option>"); 
     } else { 
      echo("<option selected=''>$i</option>"); 
     } 
    } 
?> 
</select> 

我們可以在https://jsfiddle.net/r0Lcy730/

+0

更新了問題,我來自樣本的錯誤複製粘貼。抱歉。 – Michael

+0

我已更新我的答案以反映您的更改。這個腳本適用於我。如果它不適合你,請嘗試夾緊error_reporting(E_ALL);在文件頂部給我們輸出? –

+0

JavaScript未執行。但我確定JavaScript可以在我的瀏覽器中運行。 – Michael