在一个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次。我为这个毫无意义的问题道歉。
答案 0 :(得分:1)
这是我最好的猜测,关于代码中实际发生了什么,以及为什么你可能会被variable hoisting搞砸。
我想您正在尝试动态添加文本区域,然后使用var test = document.getElementById("test");
立即获取引用。由于variable hoisting,声明的变量被提升到当前范围的顶部。这将导致声明在之前添加文本区域。
由于目前尚不清楚问题出在哪里,我确实注意到你错误地使用了getElementsByName
。
getElementByName
应为getElementsByName
。一个微妙但重要的区别。由于名称不需要是唯一的,因此该函数收集具有给定name
属性的所有DOM元素的节点列表。
getElementById
返回对元素本身的引用。
返回HTML文档中具有给定名称的元素列表。
通过其ID返回对元素的引用。
答案 1 :(得分:1)
使用getElementById
效果很好。您的HTML标记必定有问题 - 可能是id
test
的另一个元素。
答案 2 :(得分:1)
我假设Teaxarea元素已成功加载并存在于DOM中。在这种情况下,您的JavaScript正在加载&amp;甚至在加载Textarea元素之前执行&amp;在DOM中准备好了。
此致