2017-02-10 13 views
0
罚球圈

我使用JavaScript来更新<input>属性改变<select>之一时:分发出去,但成的Javascript

/// HTML代码///

<select name="Pending_status" id="Type" class="Type" onChange="moveas();"> 
<option value="Internal Movement" id="Internal_Movement">Internal Movement</option> 
<option value="Resignation" id="Resignation">Resignation</option> 
<option value="Termination" id="Termination">Termination</option> 
</select> 


<div class="Check" id="Check"> 

</div> 

/// Java脚本的代码///

function moveas() { 
    var elements = document.getElementsByClassName("Type"); 
    var type = ''; 
    for(var i=0; i<elements.length; i++) { 
     type += elements[i].value+"<br>"; 
    } 
    document.getElementById("Check").innerHTML = type+"<br>"; 
    }; 

But as the pic shows I get the results on the first row only, i don't know how to distribute them on each row

我尝试使用document.getElementsByClassName(“检查”),但它没有给我任何东西。你能帮忙吗?

+0

你不能有一个以上的元素与HTML同一文档中相同的ID。所以如果你有多行显示的HTML,你会遇到问题。 –

回答

0

首先:永远不要使用相同的ID两次!

本质上,问题在于您插入了多行,但您想操纵几个不同HTML标签的innerHTML。你要做的就是:

<div class="Check" id="Check"> 
    content<br> 
    morecontent<br> 
</div> 

取而代之的是:

<div class="Check" id="Check1"> 
    content 
</div> 
<div class="Check" id="Check2"> 
    morecontent 
</div> 

看到区别?

看起来有一些HTML代码丢失。我猜你正在使用类似<table>的结构。 (列是行的元素。)在这种情况下,一个简单的解决方案是使用javascript siblings。否则,您将不得不通过某种全局标识符访问元素。例如: - 我给了他们不同的ID在我的例子,因此你可以使用的getElementById检索它们:

for(var i=0;i<elements.length;i++){ 
    document.getElementById("Check"+i).innerHTML=elements[i].value; 
} 
+0

谢谢你,你最后的代码救了我兄弟:) –