2016-06-29 61 views
1

我有一個輸入標記正在被包含在一個javascript中。產生的輸入標籤如下所示:getElementByClassName更改輸入值

<input class="mylivechat_prechat_name_box mylivechat_prechat_box" type="text"> 

有什麼辦法,我可以添加一個變量輸入變量的值的結束?

我使用JavaScript來設置表單域的嘗試:

var myClassName = document.getElementsByClassName('mylivechat_prechat_name_box mylivechat_prechat_box'); 
i = myClassName.length; 
myClassName[i].value = "TheseAreMyChanges"; 

但是,我得到的錯誤

Uncaught TypeError: Cannot set property 'value' of undefined

+0

返回集合的索引從0開始 – Teemu

+0

你能描述你想真正實現* *是什麼?它不完全清楚 – Jamiec

+0

嗨Jamiec,是的,試圖改變表單的輸入值 - 這是由以前加載的JavaScript包括/生成的。由於某些原因,我總是收到未定義的錯誤。 –

回答

0

在你的代碼myClassName[i]undefined,因爲i持有長最大索引值爲length - 1。並且字符串可以在末尾附加+=,從而得到連接值。

var myClassName = document.getElementsByClassName('mylivechat_prechat_name_box mylivechat_prechat_box'); 
myClassName[0].value += "TheseAreMyChanges"; 

如果你要更新的最後一個元素,然後通過指數length -1

var myClassName = document.getElementsByClassName('mylivechat_prechat_name_box mylivechat_prechat_box'); 
myClassName[myClassName.length - 1].value += "TheseAreMyChanges"; 
0

Array的是基於零獲得的元素,所以如果你看過length和使用該索引它比最高的一個更元件。試圖讀取數組邊界之外的元素將返回undefined - 所以使用length-1

var myClassName = document.getElementsByClassName('mylivechat_prechat_name_box mylivechat_prechat_box'); 
var i = myClassName.length; 
myClassName[i-1].value = "TheseAreMyChanges"; 
0

你可以使用querySelector

document.querySelector('.mylivechat_prechat_name_box.mylivechat_prechat_box').value+='NEW'; 

添加:last-child在選擇結束時,如果你想得到最後一個元素:

document.querySelector('.mylivechat_prechat_name_box.mylivechat_prechat_box:last-child'); 

希望這會有所幫助。


var elem = document.querySelector('.mylivechat_prechat_name_box.mylivechat_prechat_box'); 
 
elem.value += ' NEW';
<input class="mylivechat_prechat_name_box mylivechat_prechat_box" type="text" value='OLD'/>

+1

是什麼讓你覺得他們想要* first *元素,當問題的一切都表明他們想*最後*? – Jamiec

+0

謝謝@Jamiec更新了我的答案,':最後一個孩子'封面。 –