Javascript 如果我将输入值存储在变量中,为什么输入值总是空的?

Javascript 如果我将输入值存储在变量中,为什么输入值总是空的?,javascript,html,variables,dom,Javascript,Html,Variables,Dom,我试图从字段中获取value属性,以便以后可以使用它从特定的API URL获取数据 问题是,无论我输入什么,我的值总是空的 我尝试使用document.querySelector和document.getElementById;两者产生相同的结果 const searchBtn=document.queryselector搜索btn; //常量inpuValue=document.querySelectorinputField.value; const inputValue=document.g

我试图从字段中获取value属性,以便以后可以使用它从特定的API URL获取数据

问题是,无论我输入什么,我的值总是空的

我尝试使用document.querySelector和document.getElementById;两者产生相同的结果

const searchBtn=document.queryselector搜索btn; //常量inpuValue=document.querySelectorinputField.value; const inputValue=document.getElementByIdinputField.value; 常量测试==>alertinputValue; searchBtn.addEventListenerclick,测试; 警报只是显示为空,但如果在HTML字段中指定值,则不会显示为空。所以我想我触发了正确的按钮和字段。我使用alert是因为没有浏览器在控制台中向我显示console.log。

每次单击按钮时都会调用测试函数处理程序

相反,在首次执行代码时,在页面加载期间的初始脚本求值时,inputValue变量只求值一次,而不再求值。输入值存储在变量中,之后再也不会更新。字符串在JavaScript中是不可变的:一旦将字符串存储在变量中,除非将该变量指定给另一个值,否则它不会更改

如果要在每次单击按钮时刷新值,则必须每次查询元素:

常数测试==>{ const inputValue=document.getElementByIdinputField.value; 警报输入值; } 或者,您可以只保留对元素的引用,并每次查询value属性:

const inputElement=document.getElementByIdinputField; 常量测试==>alertinputElement.value; 每次单击按钮时都会调用测试函数处理程序

相反,在首次执行代码时,在页面加载期间的初始脚本求值时,inputValue变量只求值一次,而不再求值。输入值存储在变量中,之后再也不会更新。字符串在JavaScript中是不可变的:一旦将字符串存储在变量中,除非将该变量指定给另一个值,否则它不会更改

如果要在每次单击按钮时刷新值,则必须每次查询元素:

常数测试==>{ const inputValue=document.getElementByIdinputField.value; 警报输入值; } 或者,您可以只保留对元素的引用,并每次查询value属性:

const inputElement=document.getElementByIdinputField; 常量测试==>alertinputElement.value;
要知道的一个关键点是:当你分配一个变量时,它永远不会改变它的值,除非你重新分配它。但字符串和数字、布尔值、null、未定义、符号和bigint都是基本值,并且所有这些都是不可变的,因此,如果字符串的“原始引用”在其他地方更改了值,它就不会在变量内神奇地更改。然而,对象和函数不是原语;它们的“值”是一个固定的引用,它也永远不会改变,但是这个引用就像一个地址,可以引导其他值 — 这种“引用其他值”的方式可能会改变。需要知道的一个关键点是:当你分配一个变量时,它永远不会改变它的值,除非你重新分配它。但字符串和数字、布尔值、null、未定义、符号和bigint都是基本值,并且所有这些都是不可变的,因此,如果字符串的“原始引用”在其他地方更改了值,它就不会在变量内神奇地更改。然而,对象和函数不是原语;它们的“值”是一个固定的引用,它也永远不会改变,但是这个引用就像一个地址,可以引导其他值 — 这种“引用其他值”的方式可能会改变。