在我的js文件中,当将新值赋予位于元素中的.value属性,并且仍为我提供默认值时,全局变量不会获得为其分配的新值。
但是当我在侦听器函数中声明具有相同方法以获取value属性值的变量时,会将新值分配给它
您能否说明这种现象的原因?
并预先感谢
<input type="text" id="v" value="9">
<button onclick="my()">read</button>
<script>
var ff0 = document.querySelector('#v').value
function my(){
var ff2 = document.querySelector('#v').value
alert(
'ff0 >> ' + ff0 + '\n' +
'ff2 >> ' + ff2 + '\n'
)
}
</script>
如果我给(5)输入元素并单击按钮,则警报消息将为
ffo >> 9
ff2 >> 5
为什么ff0和ff2都没有获得相同的新值5?
最佳答案
<input type="text" id="v" value="9">
<button onclick="my()">read</button>
<script>
var ff0 = document.querySelector('#v').value
function my(){
var ff2 = document.querySelector('#v').value
alert(
'ff0 >> ' + ff0 + '\n' +
'ff2 >> ' + ff2 + '\n'
)
}
</script>
ff0已被全局声明,因此将其填充一次,然后将其打印出来就可以了。
ff2的行为完全不同,实际上它是在函数内部局部声明的,单击按钮时会触发同样的事情。然后,始终使用输入的数据刷新变量。