为什么这个JavaScript代码不能在文档准备好的情况下工作,但是当我将它包装在脚本类型中时呢?

时间:2017-11-13 16:21:03

标签: javascript jquery html

我在JavaScript中有以下功能:

function valueChanged(){
   if (jQuery('#home_room_type_kitchen').is(":checked")) {
      console.log('shown');jQuery('#product_section_one').show();
   } else {
      console.log('hiden');jQuery('#product_section_one').hide();
   }
}

valueChanged();

当我把它放在现有的jQuery(document).ready(function(){}); .js文件声明中时,脚本不会运行并返回Uncaught ReferenceError: valueChanged is not defined at HTMLInputElement.onchange

然而,当我把它放在html文件中并将其包装在<script type="text/javascript"></script>中时,代码运行正常。

我真的很困惑,为什么会这样,我在这里缺少什么。我想把这个函数放在文件准备好的.js文件中可以正常工作吗?

1 个答案:

答案 0 :(得分:2)

函数声明应该在单独定义的ready函数之外,然后只需在ready函数内调用它,如:

<script type="text/javascript">
    jQuery(document).ready(function(){
        valueChanged();
    });

    function valueChanged(){
      if (jQuery('#home_room_type_kitchen').is(":checked")) {
        console.log('shown');jQuery('#product_section_one').show();
      } else {
        console.log('hiden');jQuery('#product_section_one').hide();
      }
    }
</script>

希望这有帮助。