创建元素时不要更改选择表单的选项

Dont changes option of select form when i createElement

本文关键字:选择 表单 选项 元素 创建      更新时间:2023-09-26

Help.plz. I create a tr "unitTableTr"。在这个 tr 里面,我 vreate a td。在创建的一个td中,在我创建了一个"unitTableTr"之后,我需要从选项中放置文本。我放入 td 中的文本,但仅适用于第一个选项 - 0.25。如果我尝试采用"选项 2"并将"选项 2"文本放入 td 中,则它只输入"选项 1"文本。

再来一次:如果我选择"选项 3",我需要 - 表中必须是"选项 3"文本,如果"选项 4"-"选项 4"文本。

我在代码中做错了什么?请帮忙

<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>
我相信

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

您的代码不起作用,因为以下代码仅在页面加载时执行一次

var b = a.options[a.selectedIndex].text;    
var c = document.createTextNode(b);
c.innerHTML = b;
text3.appendChild(c);

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

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