2013-04-16 62 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正在加載&。

問候,