我在createElement

时间:2016-01-19 18:37:33

标签: javascript option

Help.plz。我创建了一个tr“unitTableTr”。在这个tr里面我创造了一个td。在其中一个创建的td中,在我创建了“unitTableTr”后,我需要从选项中添加文本。我放入td的文本,但仅适用于第一个选项 - 0.25。如果我试图采用“选项2”并将“选项2”文本放在td中,则只放置“选项1”文本。

**!**再一次:我需要,如果我选择“选项3” - 在表中必须是“选项3”文本,如果“选项4” - “选项4”文本。

我在代码中做错了什么?帮助PLZ

<form>
<select id="work1" style="float: left;"> 
<option>Выберите расценку:</option>
<option value="0">0,25 км</option>
<option value="1">0,25 -о 2,5 км</option>
<option value="2">2,5 - 4,5 км</option>
<option value="3">4,5 км</option>
<option value="4">schools</option>
<option value="5">base</option>
</select>
<div><span>+</span> 
<input type="text"> meters</div>
</form>

<a onclick="createUnit()"> + </a>
<a onclick="removeUnit()"> x </a>

</div>

<script>     

var table_index = 0; 

var a = document.getElementById("work1");
var b = a.options[a.selectedIndex].text;    

var c = document.createTextNode(b);
c.innerHTML = b;
text3.appendChild(c);

function createUnit() {

var unitTableTr = document.createElement('tr');
var unitTableTrTd_1 = document.createElement('td');
table_index++; 

var td_1_p = document.createTextNode(table_index );
unitTableTrTd_1.appendChild(td_1_p);
unitTableTr.appendChild(unitTableTrTd_1); 

var unitTableTrTd_2 = document.createElement('td');
var text2 = document.createTextNode("Reconstruction ");
var p = document.createElement("p"); 
var text3 = document.createTextNode(c.innerHTML);
p.id ="text3";
unitTableTrTd_2.appendChild(p);
unitTableTr.appendChild(unitTableTrTd_2);
p.appendChild(text2);
p.appendChild(text3);

var unitTableTrTd_3 = document.createElement('td');
unitTableTr.appendChild(unitTableTrTd_3);
var unitTableTrTd_4 = document.createElement('td');
unitTableTr.appendChild(unitTableTrTd_4);
var unitTableTrTd_5 = document.createElement('td');
unitTableTr.appendChild(unitTableTrTd_5);
begin_table.appendChild(unitTableTr);

}


</script>

1 个答案:

答案 0 :(得分:0)

我认为您的问题是由执行顺序引起的。

您的代码无效,因为 以下代码仅在页面加载时执行一次

var b = a.options[a.selectedIndex].text;    

var c = document.createTextNode(b);
c.innerHTML = b;
text3.appendChild(c);

在您的代码中,您会在createUnit()函数之前显示这种情况。所以这只会运行一次 - 在页面加载时。当页面加载时,所选索引始终是选项列表中的第一个项目。

从您的英语来看,很难准确说出您希望程序如何工作,但是,每次要创建该元素时,您都需要获取所选索引。通过将上述代码移到createUnit()函数中,它可以解决您的问题,但是再次......如果不长时间研究它,很难说出您的程序在做什么。