【问题标题】:Textarea return value is always nullTextarea 返回值始终为空
【发布时间】:2017-10-20 00:15:34
【问题描述】:

我正在尝试将用户从文本区域输入到我的 javascript 中

function validateMessage() {
  var message = document.getElementById("message").value;
  window.alert(message);
}
<label>Message:</label>
<textarea rows="5" cols="50" id="message">Foo</textarea><button onclick="validateMessage()">Validate message</button>

浏览器控制台不断给我这个消息

TypeError: document.getElementById(...) is null[了解更多] contact.js:51:14

第 51 行是我的 JavaScript 中的实际行。 我已经阅读了大多数人说使用 .value 的解决方案 但正如您所看到的,它返回 null。 我不知道为什么。

【问题讨论】:

  • 您确定要在页面(或至少该元素)加载后调用函数吗?
  • 您有另一个问题,答案很好,但没有接受的答案。该网站因此而存在,因此我建议您将问题与接受的答案保持良好的比例,因为人们会注意到您不接受答案,因此他们不会努力帮助您。
  • 是的,正在调用该函数。我已经测试过了。此外,如果未调用该函数,则不会出现错误
  • @Ricky 不谈论被调用的函数。谈论在页面加载之后调用的函数(注意粗体之后)。
  • 投票关闭,因为发布的代码有效,前提是在文本区域存在后调用该函数。

标签: javascript textarea


【解决方案1】:

错误不是textarea返回值为null,而是getElementById为null,表示没有id为message的元素。

作为提示,学习理解错误。仔细阅读,理解每个单词。

【讨论】:

  • 标记中的空格与 OP 的问题无关。开始标签可以是&lt;textarea rows="5"cols="50"id="message"&gt;
  • @RobG 哦,我习惯了“空格定义单词”。不知道 HTML 不需要空格。
  • @RobG 刚刚测试过,是的,没关系。很高兴知道。
  • 如果我在 texarea 中输入内容,那么 getElementById("message") 不为空,因为 id="message" 中有实际数据。如果您查看我的 html 代码,则有一个带有 id 消息的元素。我也试过 cols="50" 和 id="message" 之间的空格仍然给我错误。
  • @Ricky,你弄错了。getElementById("message") 不返回值。返回textarea 元素,稍后您可以在其中访问.value 属性以获取值,但如果getElementById("message") 返回null,则您无法访问null 的.value 属性。如您所见,错误提示 getElementById("message") 返回 null,而不是 .value 返回 null。仔细阅读并尝试理解它。 getElementById 返回 null 的唯一原因是调用时网页上不存在该元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2019-09-29
  • 2020-01-02
  • 2012-07-30
  • 2018-11-04
  • 1970-01-01
相关资源
最近更新 更多