Javascript 函数无法更新变量
Javascript function cannot update variable
我正在尝试在单击时更新 ID 为 'cost' 的按钮的值。
这是我的脚本:
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
这里是输入 html。
<input type = number id = 'cost' onclick = 'change()'>
如果说函数更改中的 costObj 为 null 是行不通的,但将 costObj 声明放在函数中似乎可行。为什么会这样?我认为如果没有声明,函数将在函数外部寻找声明,就像具有原始类型的 var 一样。这动摇了我的概念性理解。提前致谢!
放在js代码下面,将onClick = 'change()'替换为onClick = "change()"
当您的代码像这样放入 Stack Overflow“片段”时,它会按预期工作:
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
<input type = number id = 'cost' onclick = 'change()'>
我认为罪魁祸首很可能是@Musa 在评论中指出的内容:确保您的脚本出现在 <input>
标记之后,否则 cost
元素在您尝试获取对它的引用时不存在。
它在代码段中有效,因为 JavaScript 代码在 HTML 代码之后加载。请注意,Stack Overflow 对代码片段的介绍有点误导,因为它在 JavaScript.
下方显示了 HTML
为了帮助说明这一点,这里有两个版本的代码段,所有内容都包含在 HTML 部分中,而不是使用单独的 JavaScript 部分。这样我们就可以控制先加载HTML还是JavaScript代码。
这个失败了,因为 script
包含在 input
标签之前:
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
<input type = number id = 'cost' onclick = 'change()'>
这个成功了,因为 script
包含在 之后 input
标签:
<input type = number id = 'cost' onclick = 'change()'>
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
你应该尝试在对象上添加事件侦听器并将 var 更改为 const 以获得最佳方式并且不要在 html 代码下方使用 onclick 因为它看起来像调用函数的旧方法只是执行函数在侦听器事件中
例如
const costObj = document.getElementById('cost');
costObj.addEventListener("click" , function(){
change();
});
function change() {
costObj.value = 100;
}
<input type="text" id="cost" />
我正在尝试在单击时更新 ID 为 'cost' 的按钮的值。 这是我的脚本:
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
这里是输入 html。
<input type = number id = 'cost' onclick = 'change()'>
如果说函数更改中的 costObj 为 null 是行不通的,但将 costObj 声明放在函数中似乎可行。为什么会这样?我认为如果没有声明,函数将在函数外部寻找声明,就像具有原始类型的 var 一样。这动摇了我的概念性理解。提前致谢!
放在js代码下面,将onClick = 'change()'替换为onClick = "change()"
当您的代码像这样放入 Stack Overflow“片段”时,它会按预期工作:
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
<input type = number id = 'cost' onclick = 'change()'>
我认为罪魁祸首很可能是@Musa 在评论中指出的内容:确保您的脚本出现在 <input>
标记之后,否则 cost
元素在您尝试获取对它的引用时不存在。
它在代码段中有效,因为 JavaScript 代码在 HTML 代码之后加载。请注意,Stack Overflow 对代码片段的介绍有点误导,因为它在 JavaScript.
下方显示了 HTML为了帮助说明这一点,这里有两个版本的代码段,所有内容都包含在 HTML 部分中,而不是使用单独的 JavaScript 部分。这样我们就可以控制先加载HTML还是JavaScript代码。
这个失败了,因为 script
包含在 input
标签之前:
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
<input type = number id = 'cost' onclick = 'change()'>
这个成功了,因为 script
包含在 之后 input
标签:
<input type = number id = 'cost' onclick = 'change()'>
<script>
var costObj = document.getElementById('cost');
function change() {
costObj.value = 100;
}
</script>
你应该尝试在对象上添加事件侦听器并将 var 更改为 const 以获得最佳方式并且不要在 html 代码下方使用 onclick 因为它看起来像调用函数的旧方法只是执行函数在侦听器事件中
例如
const costObj = document.getElementById('cost');
costObj.addEventListener("click" , function(){
change();
});
function change() {
costObj.value = 100;
}
<input type="text" id="cost" />