为什么可以't我在字段名称中使用-

Why can't I use - in field names?

本文关键字:字段 为什么      更新时间:2023-09-26

基本上我只是想清除一个文本字段,这对我来说从来都不是问题。然而,这不起作用:

<html>
<body>
<form name="form">
<input type="text" name="input-field" value="Value" />
<input type="button" name="clear" value="Clear field" onclick="document.form.input-field.value = ''"; />
</form>
</body>
</html>

但是,如果我将"inputfield"重命名为"inputfield",并将onclick重命名为onclick="document.form.inputfield.value=''"。。。然后它工作得很好。

然而。。。在我的情况下,从字段名称中删除"-"不是一个选项(详细解释)。

那么,如何清除包含"-"的文本字段???

因为它不是有效的JavaScript标识符。但是,您可以使用以下内容:

document.form['input-field'].value

这与不能使用var my-var声明变量的原因相同。另一方面,如果你有一个object,比如有几个键的form,你可以访问它的属性,就像它是一个关联数组一样:

var form = {
  "input-field": 20,
  otherKey: 30
};
form.input-field; // Error
form.otherKey; // OK
form['input-field']; // OK

参考文献:

  • 标识符名称和标识符(ECMAScript语言规范)
  • 对象作为关联数组

-不是标识符中的有效字符,例如

document.form.input-field;

被解释为

document.form.input - field;

当然,你可以通过使用方括号表示法来解决这个问题:

document.form["input-field"];