我试图通过一个select来命名一个函数,但没有任何反应.当函数在属性之后被描述时,它起作用.
这不工作
HTML:
<select id="numb"> <option value="1">1</option> <option value="2">2</option> </select>
脚本:
<script type="text/javascript"> $('#numb').change(testMessage); </script> <script type="text/javascript"> function testMessage(){ alert('Hello'); } </script>
这个工作
HTML:
<select id="numb"> <option value="1">1</option> <option value="2">2</option> </select>
脚本:
<script type="text/javascript"> $('#numb').change(function(){ alert('Hello') }); </script>
编辑:
好的,对于所有说我将功能包含在同一个脚本的人.这是不可能的,因为testMessage()函数在< head>中包含的外部.js脚本中.的HTML.
解决方法
这是因为在将其绑定到change事件时,没有定义处理程序testMessage.
它应该工作,如果它在同一个脚本上下文,如下所示,
<script type="text/javascript"> $('#numb').change(testMessage); function testMessage(){ alert('Hello'); } </script>
< script>< / script>内的代码从顶部逐个执行,并且testMessage函数在第一个< script>< / script> ;.之内不存在. 你有几个选择在这里,
>把它放在一个匿名的函数中,让你的脚本稍后解析testMessage函数. [如Optimus Prime年的答案]
<script type="text/javascript"> $('#numb').change(function () { testMessage }); </script> <script type="text/javascript"> function testMessage(){ alert('Hello'); } </script>
>将包含testMessage函数的脚本包含在绑定testMessage的脚本之上,
<script type="text/javascript"> function testMessage(){ alert('Hello'); } </script> <script type="text/javascript"> $('#numb').change(testMessage); </script>