这里有问题opener.document.all.sel_option_1.options[i] = new Option(dayArray1[i].text, dayArray1[i].value);你原来的select对象里的options集合是空的,不能直接赋值。语法好像也有问题。
应该是:
var oOption = document.createElement("OPTION");
opener.document.all.sel_option_1.options.add(oOption);
oOption.innerText = "Two";
oOption.value = "2";
应该是:
var oOption = document.createElement("OPTION");
opener.document.all.sel_option_1.options.add(oOption);
oOption.innerText = "Two";
oOption.value = "2";
opener.document.all.sel_option_1.options.add(oOption);
////////////////////////////////////////
kjk_pop.html
<script language="javascript">
<!--
if (window.opener) {
var oOption = document.createElement("OPTION");
opener.document.all.sel_option_1.options.add(oOption);
alert("OK");<--这句以后就没有办法执行下去,不知道为何?
oOption.innerText = "a1";
oOption.value = "a12";
alert(oOption.innerText);
alert(oOption.value);
}
-->
</script>
你的程序有几个问题:
1.function fnc_OpenPop() {
subWin = window.open("kjk_pop.html", "window1", "width=0, height=0, scrollbars=1, resizable=1");
document.main.submit();
}
这里,你打开窗口后就提交表单了,建议不要这样做。因为这样你无法保证你在修改父窗口时父窗口里还是表单的页面(可能已被提交了)
2.在子窗口里不能修改父窗口对象的属性,这好像是安全方面的考虑。建议在父窗口中提供添加option的函数,自窗口调用父窗口的函数添加option.-------kjk_test.html-----
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=gb2312">
<TITLE>HELLO WORLD</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function fnc_Submit() {
document.main.submit();
}
function fnc_OpenPop() {
subWin = window.open("kjk_pop.html", "window1", "width=0, height=0, scrollbars=1, resizable=1");
/************************不要在这里提交**************************/
//document.main.submit();
}
/***********************提供添加option函数 begin******************/
function addOption(oSelect,OptionTest,OptionValue){
var oOption = document.createElement("OPTION");
oSelect.add(oOption);
oOption.innerText = OptionTest;
oOption.value = OptionValue;
}
/***********************提供添加option函数 end******************/
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM ACTION="szh_test.php" TARGET="_self" NAME="main" METHOD="post">
<select name="sel_option" onchange="javascript:fnc_OpenPop();">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<!-- OPTION 1 -->
<select name="sel_option_1">
</select> <!-- OPTION 2 -->
<select name="sel_option_2">
</select> <!-- OPTION 3 -->
<select name="sel_option_3">
</select> <!-- OPTION 4 -->
<select name="sel_option_4">
</select>
</FORM>
</BODY>
</HTML>----------------------------------------------------------------------------
kjk_pop.html<script language="javascript">
<!--
if (window.opener) {
var dayArray1 = new Array(4);
var dayArray2 = new Array(4);
var dayArray3 = new Array(4);
var dayArray4 = new Array(4);
for (i = 1; i <= 4; i++) {
dayArray1[i-1] = new Option("a" + i, "a" + i);
dayArray2[i-1] = new Option("b" + i, "b" + i);
dayArray3[i-1] = new Option("c" + i, "c" + i);
dayArray4[i-1] = new Option("d" + i, "d" + i);
}
for (i = 0; i < 4; i++) {
/**********************这里改调用父窗口的函数添加option begin**************/
opener.addOption(opener.document.all.sel_option_1,dayArray1[i].text,dayArray1[i].value);
opener.addOption(opener.document.all.sel_option_2,dayArray2[i].text,dayArray2[i].value);
opener.addOption(opener.document.all.sel_option_3,dayArray3[i].text,dayArray3[i].value);
opener.addOption(opener.document.all.sel_option_4,dayArray4[i].text,dayArray4[i].value);
/**********************这里改调用父窗口的函数添加option end**************/
}
/****************现在再提交表单,以确保执行的先后顺序 begin***************/
opener.main.submit();
/****************现在再提交表单,以确保执行的先后顺序 end***************/
opener.focus();
window.close();
}
-->
</script>