例如,我有 HTML :
<script src="test.js"></script>
<script>
$(document).ready(function() {
initFields();
});
</script>
<input id="input" type="text">
我的 JS :
var $input;
function initFields() {
$input = document.getElementById("input"); //or $('#input) in jQuery
}
这样,我可以随时访问$input.value
(例如提交表单或清理字段等),以便变量可重用。我的疑问是:将DOM元素设置为全局变量是不是一种错误的做法?
答案 0 :(得分:3)
有时全局变量是不可避免的,但它们总是令人遗憾。我建议创建一个全局对象,并用你想要引用的DOM元素的引用填充它。
,例如,在全球范围内:
var $elements = {
$input : $('#input'),
$header : $('#header'),
// etc, etc
};
请记住,所有全局变量都只是window
对象的属性。在javascript中创建全局变量的一个更大问题是,您可能会意外覆盖window
上的属性,这可能会产生难以调试的严重后果。如果你只是定义一个全局变量(如本例所示),你可能不会遇到麻烦,但如果你为不同的DOM元素或其他任何东西定义了几十个变量,你的程序可能会很快变得难以维护,而且很难调试。