2013-04-16 65 views
0

在一个JavaScript函数中,我创建了一个基于一些JSON数据的textarea,我从另一个站点获取。我在这里创建textarea的:如何使用javascript访问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

既然你已经使用jQuery,你为什么不使用$( “#测试”)。VAL() –

+0

请出示你的HTML或更好,创造的jsfiddle。 –

+0

什么给alert(typeof document.getElementById(“test”));'? – plalx

回答

1

这是我最好的至于你的代码中究竟发生了什么,以及为什么你可能会被variable hoisting搞砸。

我想你试图动态地添加你的文本区域,然后通过使用var test = document.getElementById("test");来获取引用。由于variable hoisting,所宣称的变量是,被吊到当前范围的顶部。这会导致之前发生的声明文本区域被添加。

由于目前还不清楚OP的问题所在,我确实注意到您错误地使用了getElementsByName

getElementByName应该是getElementsByName。微妙但显着的差异。由于名称不必是唯一的,函数会收集具有给定name属性的所有DOM元素的节点列表。

getElementById另一方面返回对元素本身的引用。

getElementsByName

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

getElementById

返回其ID到元素的引用。

+1

这并不能解释为什么当他使用'getElementById'时他也会出错。 – Barmar

+1

是的,我当时正在更新和思考 - 但是因为我首先注意到了getElementsByName这个问题,所以我想继续指出它。 – Chase

1

使用getElementById工作得很好。您的HTML标记必须有问题 - 可能是idtest的另一个元素。

Working fiddle:

1

我假设Teaxarea元件被成功地加载并存在于DOM。在这种情况下,即使在DOM准备好了Textarea元素之前,您的javascript正在加载&。

问候,