[英]JavaScript function doesn't work with variable declared before function
我想在函数之前声明一个或多个变量,但是当我执行该函数时,该函数无法正常工作。 我知道在函数内部声明的变量是仅在函数范围内起作用的局部变量。 为什么在函数之外/之前,我的变量不能用作“全局”变量?
<script type="text/javascript">
var visitors = document.getElementById('tb254597').value;
function limitVisitors() {
if ( visitors > 60 ) {
alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
}
}
</script>
将变量声明和初始化插入函数内部,因为在开始时从变量中获取了初始值,而不是实际值。
如果需要不在函数外部的变量,最好将其保留在函数内部。
使用parseInt()
将值更改为数字,因为您会从输入中获取字符串。
在某个地方(可能是在提交时limitVisitors()
调用函数limitVisitors()
。
function limitVisitors() {
var visitors = parseInt(document.getElementById('tb254597').value, 10);
if ( visitors > 60 ) {
alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
}
}
limitVisitors();
页面加载后,您立即获取tb254597
的值。 这将是一个空字符串( ''
)。 每次检查时都需要获取该值。
写下朋友地址时,请想一想。 写下时,您已经得到了他们的地址。 但是,如果他们搬家怎么办? 如果您转到旧地址,则不会找到朋友。 请务必检查您的朋友的最新地址。
这取决于您如何调用该函数。 无论哪种方式,您都必须将变量传递到函数中,以便函数知道您的值。
与此类似:
<script type="text/javascript">
// this parameter can be named whatever
function limitVisitors(param1) {
if ( param1 > 60 ) {
alert("We can only accommodate 60 people on a group visit. You entered " + param1 + " visitors.");
}
}
// Just make sure that this value gets passed to the function like this
var visitors = document.getElementById('tb254597').value;
limitVisitors(visitors);
</script>
您可能需要考虑使用jQuery,以便可以使用$(document).ready()
函数在DOM实际加载时运行。 如果要允许用户输入,则可能需要一个事件绑定,例如单击按钮。
编辑:由于您在HTML元素中使用onchange,因此这应该是您所需要的。 注意函数调用中的更改:
<input type="text" name="Field_Number_of_visitors" size="20" id="tb254597" onchange="limitVisitors(this.value);" />
<script type="text/javascript">
// this parameter can be named whatever
function limitVisitors(param1) {
if ( param1 > 60 ) {
alert("We can only accommodate 60 people on a group visit. You entered " + param1 + " visitors.");
}
}
</script>
我认为您应该这样做:
function limitVisitors() {
var visitors = parseInt(document.getElementById('tb254597').value);
if ( visitors > 60 ) {
alert("We can only accommodate 60 people on a group visit. You entered " + visitors + " visitors.");
}
}
每次调用limitVisitors
您将获得值并进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.