0
我有一个表单使用行来接收用户输入。用户可以点击一个链接来获得一个新的行。该链接调用一个函数,该函数在创建新行和单元格后创建一个新元素。当元素被创建时,调用另一个函数,当需要时,使用AJAX接收SELECT选项。这工作正常。selectedIndex未设置,除非显示警告
当新元素完成后,会调用一个函数将选定元素值从前一行复制到新行中。但是,发生的事情超越了我。
将前一行的INPUT值复制到新行中。 复制SELECT的索引只有在设置new_element.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;
}
}
}
我什么都看不到壮观这里.. 可有人请赐教一下为什么出现这种情况,如何解决这一问题?
感谢Ralph..Because我使用的是相同的selectedIndex多次,我改变了我的代码,包括: '变种N = old_element.selectedIndex;' 而在这个地方你的建议: 'new_element.options [n]的.setAttribute( '选择', '选择');' 在JS错误控制台,我现在看到: '错误:类型错误:new_element.options [n]是undefined' 因此,由于n被正确定义(我使用警报进行了检查),所以这确实是因为o new_element ptions没有完全呈现。 我在一行中有多个选择元素..有没有办法等待这种情况发生而不使用警报? – Storm49152
好吧,所以我发现这是因为AJAX是异步的,并且不推荐的方法来解决这个问题是使他.open方法同步..我现在试图以推荐的方式解决它..供参考: [链接](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Storm49152