Javascript jQuery:获取元素的值时,是否需要在文档中声明变量?
我将特定表单元素的值存储为变量。此值在多个函数中使用Javascript jQuery:获取元素的值时,是否需要在文档中声明变量?,javascript,jquery,Javascript,Jquery,我将特定表单元素的值存储为变量。此值在多个函数中使用 function one() { var selectedRole = $('#RegistrationRole_ID').val(); } function two() { var selectedRole = $('#RegistrationRole_ID').val(); } 我想让它成为一个全局变量,这样我就不必在每个函数中一直选择它。所以我的问题是,如果我在documentready块之外声明变量,我仍然能够正确地
function one() {
var selectedRole = $('#RegistrationRole_ID').val();
}
function two() {
var selectedRole = $('#RegistrationRole_ID').val();
}
我想让它成为一个全局变量,这样我就不必在每个函数中一直选择它。所以我的问题是,如果我在documentready块之外声明变量,我仍然能够正确地获取值吗
<select id="RegistrationRole_ID">
<option value="1">one</option>
</select>
一
我想我可能已经回答了我自己的问题…可能在加载文档时该值会发生变化。实际上,我要做的是删除重复的代码,在这里我多次获得元素的值。你对此有什么建议吗?有。但是只使用
var
一次,因为它声明了变量
var selectedRole; // selectedRole is now global.
function one() {
// If one() is called after doc ready
// selectedRole will be $('#RegistrationRole_ID').val();
// in it.
}
function two() {
// If two() is called after doc ready
// selectedRole will be $('#RegistrationRole_ID').val();
// in it.
}
$(function() {
selectedRole = $('#RegistrationRole_ID').val(); // This change that global
// Now you can use one() and two() w/o redoing the same jQuery
// over and over again.
one(); two();
});
更好的选择。只需为所有变量/函数使用一个足够大的作用域,并使用一个自动执行的匿名函数:
(function() {
var selectedRole; // selectRole is now available everywhere in the anon fun()
// but it is not global
function one() {
...
}
function two() {
...
}
$(function() {
selectedRole = $('#RegistrationRole_ID').val(); // Change the variable
// Now you can use one() and two() and
// selectedRole will be available:
one(); two()
});
}());
var getRoleId = (function() {
var roleField = $('#RegistrationRole_ID').get(0);
return function() {
return roleField.value;
};
})();
我建议不要那样做。如果您想更快/更方便地访问,请编写一个函数:
(function() {
var selectedRole; // selectRole is now available everywhere in the anon fun()
// but it is not global
function one() {
...
}
function two() {
...
}
$(function() {
selectedRole = $('#RegistrationRole_ID').val(); // Change the variable
// Now you can use one() and two() and
// selectedRole will be available:
one(); two()
});
}());
var getRoleId = (function() {
var roleField = $('#RegistrationRole_ID').get(0);
return function() {
return roleField.value;
};
})();
现在你可以写作了
if (getRoldId() == 22) { // whatever }
优点是你确实不重复自己:这个角色字段具有全局唯一的“id”值,实际上已经是一个“全局变量”。该函数只是确保您没有执行冗余的“document.getElementById()”调用(通过jQuery),但它保持了诚实,避免了脚本“缓存”值不同步的潜在问题。这必须进入doc ready内部。-然后执行
函数一()
和函数二()
。是,为true,或者在
之前导入的
块中