2017-03-09 60 views
0

不同的內部HTML誰能與你怎麼從同一類不同的innerHTML成輸入文本幫助?這是代碼。謝謝。得到同一類

function myFunction() { 
 
    var a = document.getElementsByClassName("name"); 
 
    var b = document.getElementById("whispering"); 
 
    a.innerHTML = b.value; 
 
}
<span onclick="myFunction();" class="name" id="username1"> Username 1 </span> 
 
<span onclick="myFunction();" class="name" id="username2"> Username 2 </span> 
 

 
<input type="text" id="whispering">

+1

'getElementsByClassName'返回的HTMLCollection,而不是一個單一的元件。 –

+0

如果我更改爲ID而不是類別。 – Neof

+0

現在,您擁有非唯一的ID。 – Jamiec

回答

0

像這樣的事情會做的伎倆:

a[2].innerHTML = b.value; 

或者,如果你想要的特定項目點擊,你可以這樣做:

HTML

<span id="1" class="name">Content</span> 
<span id="2" class="name">Content</span> 

JS

var spans = document.getElementsByClassName("name"); 

for(var i = 0; i < spans.length; i++){ 
    spans[i].onclick = function(){ 
     this.innerHTML = b.value; 
    } 
} 

注意:這也將停止使用內嵌的JS :)

小提琴:https://jsfiddle.net/yn9wauyk/

+0

你試過這個嗎?點擊後,您將始終獲得最新的跨度更新。 – Jamiec

+0

@Jamiec第一個只是一個如何獲得指定'跨度'的例子:)我在第二個塊中添加到它 –

+0

我認爲你誤解了我。把這段代碼變成一個片段或者jsfiddle它,你會看到它不會工作。 – Jamiec

1

與您的代碼的問題是getElementsByClassName返回一個集合,所以你需要環通過,並設置每個元素的innerHTML

function myFunction() { 
 
    var a = document.getElementsByClassName("name"); 
 
    var b = document.getElementById("whispering"); 
 

 
    for (var i = 0; i < a.length; i++) { 
 
    a[i].innerHTML = b.value; 
 
    } 
 
}
<span onclick="myFunction();" class="name" id="1"> HAHA1 </span> 
 
<span onclick="myFunction();" class="name" id="2"> Haha2 </span> 
 

 
<input type="text" id="whispering">

0

你會更好地傳遞到點擊的元素到你的方法的引用 - 這解決了引用正確的元素的所有問題按id或按類。

function myFunction(elem) { 
 
    var b = document.getElementById("whispering"); 
 
    elem.innerHTML = b.value; 
 
}
<span onclick="myFunction(this);"> HAHA1 </span> 
 
<span onclick="myFunction(this);"> Haha2 </span> 
 

 
<input type="text" id="whispering">