我有一个表单使用行来接收用户输入。用户可以单击链接以获取新行。该链接调用一个函数,该函数在创建新行和单元格后创建一个新元素。创建元素时,将调用另一个函数,在需要时,使用AJAX接收SELECT选项。这很好。
当新元素完成时,将调用一个函数将所选元素值从前一行复制到新行中。然而,发生的事情超出了我的范围。
将上一行的INPUT值复制到新行。 在设置new_element.selectedIndex之前显示警告框时,从SELECT 仅复制selectedIndex。
功能:
function CopyPreviousValue(new_element, old_element_name, new_id) {
if (new_id > 1) {
var old_element = document.getElementsByName(old_element_name)[0];
switch (old_element.tagName) {
case "SELECT":
//alert("[old_element.selectedIndex] "+old_element.selectedIndex);
new_element.selectedIndex = old_element.selectedIndex;
if (old_element.selectedIndex != -1) new_element.disabled = false;
break;
case "INPUT":
new_element.value = old_element.value;
if (old_element.value != "") new_element.disabled = false;
break;
}
}
}
我在这里看不到任何壮观的景象...... 有人可以告诉我为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:0)
此代码运行时,您的选择框可能尚未呈现。浏览器可能正在清除selectedIndex,同时呈现具有selected =“selected”属性的选项。警报为浏览器提供了在复制selectedIndex之前呈现选择的时间,这就是它与警报一起工作的原因,而不是没有。
设置所选索引后尝试添加此代码。
if (old_element.selectedIndex != -1) {
new_element.options[old_element.selectedIndex].setAttribute('selected','selected');
new_element.disabled = false;
}