在一个javascript函数中,我基于从另一个站点抓取的一些JSON数据创建了一个文本区域。我在这里创建了文本区域:
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它告诉我这个值是未定义的。文本区域不会自动将它们的值设置为您在其中键入的值吗?有没有更好的方法来获取输入到文本区域中的内容?
编辑:
getElementById现在正在工作...不知道我之前在做什么,但我肯定已经尝试了3-4次。我为这个无意义的问题道歉。
发布于 2013-04-16 09:32:13
这里是我最好的猜测,关于你的代码中到底发生了什么,以及为什么你可能会被variable hoisting搞砸。
我假设您正在尝试动态添加文本区域,然后使用var test = document.getElementById("test");立即获取一个引用。由于variable hoisting,声明的变量被提升到当前作用域的顶部。这将导致声明发生在添加文本区域之前的。
由于不清楚OP的问题出在哪里,我确实注意到您错误地使用了getElementsByName。
getElementByName应为getElementsByName。一个细微但意义重大的区别。因为名称不需要是惟一的,所以该函数收集具有给定name属性的所有DOM元素的节点列表。
另一方面,getElementById返回对元素本身的引用。
返回HTML文档中具有给定名称的元素列表。
根据元素的ID返回对元素的引用。
发布于 2013-04-16 09:34:44
使用getElementById可以很好地工作。您的HTML标记一定有问题--可能是test的id的另一个元素。
发布于 2013-04-16 09:41:46
我假设Teaxarea元素已成功加载并存在于DOM中。在这种情况下,您的javascript甚至在Textarea元素在DOM中加载和就绪之前就已经加载和执行了。
致以敬意,
https://stackoverflow.com/questions/16027302
复制相似问题