jquery.val()在页面上工作,关闭页面不?为什么?

时间:2009-12-25 17:36:32

标签: javascript jquery

我有以下内容:

<script type="text/javascript">
var noteid = $('#noteid').val();
</script>
<input type="hidden" name="noteid" id="noteid" value="321">

这很有用......但现在我试图将JavaScript从页面移到一个链接的JS文件中,如下所示:

<script type="text/javascript" src="/js/note_beta.js"> </script>
<input type="hidden" name="noteid" id="noteid" value="321">

这个扩展JS文件的代码为:“var noteid = $('#noteid')。val();”但它不起作用......当它不在页面本身时,有没有让它工作的技巧?

由于

3 个答案:

答案 0 :(得分:8)

尝试将jQuery代码包装在(document).ready函数中,这可以确保它在页面加载之前不会运行,并且在将元素添加到DOM之前不会冒险尝试引用元素< / p>

所以改变:

var noteid = $('#noteid').val();

对此:

var noteid; // define it up here to ensure scope is done properly
$(document).ready(function() {
    noteid = $('#noteid').val();
});

答案 1 :(得分:1)

尝试将代码包装成这样,这样在页面加载之前它就不会运行

$(document).ready(function(){
  var noteid = $('#noteid').val();
});

答案 2 :(得分:1)

除了$(document).ready之外,不要给一个与命名元素同名的JavaScript变量(通常会提供输入)。在这种情况下它可能没有区别,但它可能导致错误。 Check out this article on the scope chain位于底部以获取更多信息。这很容易咬你。

编辑:文章的简短版本是命名元素被添加到范围链中,所以如果javascript正在寻找属性.noteid,它将使用input.noteid而不是window.noteid(window.noteid ==当声明为全局变量时,var noteid。)

相关问题