如何使用javascript访问textarea的值?

时间:2013-04-16 01:28:41

标签: javascript textarea

在一个javascript函数中,我正在根据我从另一个站点获取的一些JSON数据创建一个textarea。我在这里创建了textarea:

if(type == 'fill-in'){
    var textField = $('<center><div id="response-text"><textarea id="test" name="test" rows="10" cols="80">Answer here</textarea></div></center>').appendTo(panel.root);                        
}

在另一个函数中,我需要获取此文本字段的值并将其发送到另一个站点。我已经使用

以各种方式尝试过这个
document.getElementById("test").value

但是这给了我一个错误,如果我使用

document.getElementByName("test").value

它告诉我该值未定义。文本区域是否不会自动将其值设置为您键入的值?是否有更好的方法来获取输入textarea的内容?

编辑:

getElementById现在正在工作......不确定我以前在做什么,但我必须尝试3-4次。我为这个毫无意义的问题道歉。

3 个答案:

答案 0 :(得分:1)

这是我最好的猜测,关于代码中实际发生了什么,以及为什么你可能会被variable hoisting搞砸。

我想您正在尝试动态添加文本区域,然后使用var test = document.getElementById("test");立即获取引用。由于variable hoisting,声明的变量被提升到当前范围的顶部。这将导致声明在之前添加文本区域。

由于目前尚不清楚问题出在哪里,我确实注意到你错误地使用了getElementsByName

getElementByName应为getElementsByName。一个微妙但重要的区别。由于名称不需要是唯一的,因此该函数收集具有给定name属性的所有DOM元素的节点列表。

另一方面,

getElementById返回对元素本身的引用。

getElementsByName

  

返回HTML文档中具有给定名称的元素列表。

getElementById

  

通过其ID返回对元素的引用。

答案 1 :(得分:1)

使用getElementById效果很好。您的HTML标记必定有问题 - 可能是id test的另一个元素。

Working fiddle:

答案 2 :(得分:1)

我假设Teaxarea元素已成功加载并存在于DOM中。在这种情况下,您的JavaScript正在加载&amp;甚至在加载Textarea元素之前执行&amp;在DOM中准备好了。

此致