我花了很多时间来理解这一点,但无法得到任何与我的问题具体相关的答案,我想问的是,"value"关键字如何返回文本框或任何其他元素的值,我们可以同时分配。
我们不使用括号,所以根据我的理解,它不是一个函数。
我正在尝试创建一个具有属性的对象,让我们称之为"val",它将返回值,并且无法通过使用等于运算符来分配新值。
硬编码的值是有效的,但是如何动态地获取它呢?我会创建一个函数,每次插入值时都会激发它,并将其分配给属性吗?或者它将如何工作?因为我不能清楚地使它成为一个返回值的函数,因为那时我无法分配它。
var searchBar = {
element : document.getElementById('memSearchInput'),
val : document.getElementById('memSearchInput').value.trim(),
}
这显然是一项艰巨的工作。
我没有发布太多问题,所以如果这不清楚,很抱歉。
value
不是"关键字",而是getElementById
调用返回的DOM节点的属性。由于您似乎正在那里获取一个HTML <input>
元素(它恰好是一个名为HTMLInputElement
的DOM节点对象),您可以在该对象的描述中找到关于其value
产权的信息:
控件中的当前值。
注意:对于某些输入类型,返回的值可能与用户输入的值不匹配。例如,如果用户在
<input type="number">
中输入非数字值,则返回的值可能是空字符串。
到目前为止,您可能已经猜到该属性在许多情况下(但不是所有情况)可能会返回一个字符串,因此trim
调用将从开始和结束处去掉空白,val
属性最终被静态地设置为该字符串。
请参阅使用对象:定义getter和setter以及从中链接的getter/setter页面,了解如何实际控制从属性读取值或向属性写入值时发生的情况。
不,没有办法内置设置input
或textarea
的值并同时获得其原始值。
但不用担心——你真的可以很容易地编写自己的方法来做到这一点!
有一种方法:
function getAndSet(id, newValue){
var el = document.getElementById(id);
var oldValue = el.value.trim();
el.value = newValue;
return oldValue;
}
var searchBar = {
element : document.getElementById('memSearchInput'),
val : getAndset("memSearchInput", "someNewValue")
}