如题。问题产生的背景:
在A页面打开一个模态窗口B,传入A中的select元素对象aSel,在B中用aSel.options[aSel.option.length]=new Option(……在IE中老是报运行时错误,提示该行有不支持的属性或方法,在FF中正常。看了一下有关的书,上述动态添加option的写法应该是跨浏览器的。我直接在A中用该方法添加成功,难道是因为模态窗口的问题的么?SOS
在A页面打开一个模态窗口B,传入A中的select元素对象aSel,在B中用aSel.options[aSel.option.length]=new Option(……在IE中老是报运行时错误,提示该行有不支持的属性或方法,在FF中正常。看了一下有关的书,上述动态添加option的写法应该是跨浏览器的。我直接在A中用该方法添加成功,难道是因为模态窗口的问题的么?SOS
那你在ie下
alert(aSel)能拿到这个对象吗?
option.value = 'value';
option.innerHTML = 'html';
aSel.appendChild(option);
改成这种形式 试试~·
window.opener.aSel.options[aSel.option.length]=new Option(.. //这样呢?
……
var aSel = document.getElementById("xxx");
var srcFile="b.jsp";
var winFeatures="xxxxxxxx";
window.showModalDialog(srcFile,aSel,winFeatures);在B页面中相关处理函数中;
……
var aSel = window.dialogArguments;
……
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<select id="sel">
</select>
<script>
var sel = document.getElementById('sel');
var returnvalue = window.showModalDialog('b.html',sel);
if(returnvalue){
var option = document.createElement('option');
option.innerHTML = returnvalue;
sel.appendChild(option)
}
</script>
</body>
</html>
子页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
bbbbbbbbbbbbbbb
<input type="button" value="click me" onclick="aa()" />
<script>
function aa(){
var sel = window.dialogArguments;
var option = 'aaaa'
window.returnValue = option;
window.close();
}
</script>
</body>
</html>
楼主看看,做了一个例子~·
现在的疑惑是为什么IE中不支持传递的父窗口select对象对自身的option的添加操作,希望有知道原因的哪位能给在下解疑答惑一下。感谢以上两位的回答,尤其是MuBeiBei。暂时不结贴,挂上三四日,希望有我期待的答案。
可以用呀。是IE6,你是什么版本?