Javascript jquery:在选择更改时按名称调用函数

Javascript jquery:在选择更改时按名称调用函数,javascript,jquery,function,Javascript,Jquery,Function,我试图用select的名称.onchange调用函数,但什么也没发生。当在属性后面描述函数时,它就工作了 这不起作用 HTML: 1. 2. 脚本: <script type="text/javascript"> $('#numb').change(testMessage); </script> <script type="text/javascript"> function testMessage(){ alert('H

我试图用select的名称
.onchange
调用函数,但什么也没发生。当在属性后面描述函数时,它就工作了

这不起作用

HTML:


1.
2.
脚本:

<script type="text/javascript">
    $('#numb').change(testMessage);
</script>

<script type="text/javascript">
    function testMessage(){
        alert('Hello');
    }
</script>
<script type="text/javascript">
    $('#numb').change(function(){
      alert('Hello')
    });
</script>

$('#numb').change(testMessage);
函数testMessage(){
警惕(“你好”);
}
这很有效

HTML:


1.
2.
脚本:

<script type="text/javascript">
    $('#numb').change(testMessage);
</script>

<script type="text/javascript">
    function testMessage(){
        alert('Hello');
    }
</script>
<script type="text/javascript">
    $('#numb').change(function(){
      alert('Hello')
    });
</script>

$('#numb').change(function(){
警报(“你好”)
});
编辑:


好的,对于那些让我在同一个脚本中包含函数的人来说。这是不可能的,因为
testMessage()
函数位于HTML的
中包含的外部
.js
脚本中。

必须在change函数上定义回调

<script type="text/javascript">
    $('#numb').change(function(){
        testMessage(); 
    );

    function testMessage(){
        alert('Hello');
    }
</script>

$('#numb').change(function(){
testMessage();
);
函数testMessage(){
警惕(“你好”);
}
这应该可以解决您的问题。

请尝试

<script type="text/javascript">
    $('#numb').change(function(){
       testMessage();
    });
</script>

$('#numb').change(function(){
testMessage();
});

这是因为将处理程序
testMessage
绑定到更改事件时未定义该处理程序

如果它在下面相同的脚本上下文中,它应该可以工作

<script type="text/javascript">
    $('#numb').change(testMessage);

    function testMessage(){
        alert('Hello');
    }
</script>
<script type="text/javascript">
function testMessage(){
    alert('Hello');
}
</script>
<script type="text/javascript">
  $('#numb').change(testMessage);
</script>
  • 在绑定测试消息的
    脚本
    上方包括具有
    testMessage
    功能的脚本,如下所示

    <script type="text/javascript">
        $('#numb').change(testMessage);
    
        function testMessage(){
            alert('Hello');
        }
    </script>
    
    <script type="text/javascript">
    function testMessage(){
        alert('Hello');
    }
    </script>
    <script type="text/javascript">
      $('#numb').change(testMessage);
    </script>
    
    
    函数testMessage(){
    警惕(“你好”);
    }
    $('#numb').change(testMessage);
    

  • 尝试此操作并将其放置在同一脚本标记中:

    <script type="text/javascript">
        $(document).ready(function(){
            $('#numb').change(testMessage);
    
            function testMessage(){
                alert('Hello');
            }
        });
    </script>
    
    
    $(文档).ready(函数(){
    $('#numb').change(testMessage);
    函数testMessage(){
    警惕(“你好”);
    }
    });
    
    试试这个:

    <script type="text/javascript">
        $('#numb').on('change',testMessage);
    </script>
    
    
    $('#numb')。on('change',testMessage);
    
    我认为您对函数的引用还不存在,这里有两种方法可以实现。 我建议使用名称空间版本,因为它可能有助于清理您的代码

    HTML:

    
    1.
    2.
    
    脚本:

    <script type="text/javascript">
        $('#numb').change(testMessage);
    </script>
    
    <script type="text/javascript">
        function testMessage(){
            alert('Hello');
        }
    </script>
    
    <script type="text/javascript">
        $('#numb').change(function(){
          alert('Hello')
        });
    </script>
    
    //名称空间和使用代理

    <script type="text/javascript">
        var project = project || {};
        project = {
            testMessage: function (event) {
               alert('Hello');
            }
        };
    
        $('#numb').change($.proxy(project.testMessage, project));
    </script>
    
    
    var project=project |{};
    项目={
    testMessage:函数(事件){
    警惕(“你好”);
    }
    };
    $('#numb').change($.proxy(project.testMessage,project));
    
    //刚刚宣布

    <script type="text/javascript">
        function testMessage(){
          alert('Hello');
        }
    
        $('#numb').change(function(event) {
           testMessage();
        });
    </script>
    
    
    函数testMessage(){
    警惕(“你好”);
    }
    $('#numb')。更改(函数(事件){
    testMessage();
    });
    

    如果您的方法位于另一个文件中,请确保在包含事件绑定的文件之前包含该文件。您是否收到任何控制台错误?

    您的控制台怎么说?类似于
    testMessage的内容没有定义
    ?您应该在文档中真正进行事件绑定。就绪功能对我来说很好:@JonnySooter问题是mu多个
    元素。在它们之间提升不起作用:从编辑:
    函数位于HTML的外部.js脚本中。
    @Perocat绑定时需要解析处理程序函数,但不解析处理程序函数的内容。@Perocat匿名函数会延迟对
    testMess的取消引用age
    。到那时,它将被定义。这是一个好的/正确的解决方案,还是延迟可能会很短?@Perocat如果更简单的话,您可以更改脚本执行顺序。。将具有处理函数的脚本移到绑定该函数的脚本之上。@Perocat然后,您可以在jquery之前使用此函数加载js在我的回答中重复或仅使用方法。@Perocat将其包装在匿名函数中。绑定到onchange事件时,需要解析处理程序函数
    testMessage
    ,但不需要解析处理程序函数的内容。