2017-04-20 24 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