读书人

JS模态窗口showModalDialog 怎么访问父

发布时间: 2012-12-15 15:16:03 作者: rapoo

JS模态窗口showModalDialog 如何访问父窗口的div属性
第一个页面中parent.aspx中有一个div(由于某些原因不能加ID)
<div top='true' alias='i_1' name='i_1' rowsIndex='1'></div>
js中代码如下


var arr = new Array();
arr[0] = "a1";
arr[1] = "a2";
arr[2]=window;
var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key + "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dialogWidth:400px;dialogHeight:360px;scroll:no;status:no");

传了一些值过去,
然后我在ControlSettings.aspx页面要获取到parent页面div中的rowsIndx属性
我在js代码中这样写的 不知道为什么获取不到parent页面中那个div的属性(我得到的count是0)

//js获取到的count为0
var parent = window.dialogArguments[2];
var test = parent.document.getElementsByName("i_1");

//jquery报错说不支持此方法
rowIndex = $(("div[alias='i_1'][top='true']").attr("rowsIndex"),window.parent.document);


在这里想请教下各位大侠, 是哪里出问题了. 或者有什么其他方法可以获取到parent页面中那个div的rowsIndex. 非常感谢!
[最优解释]
var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key +  "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dialogWidth:400px;dialogHeight:360px;scroll:no;status:no");

parent页面在执行这句的时候,你的“div”都还没加载,所以在子页面是获取不到的,参考修改:
父页面:
 $(function() {
var arr = new Array();
arr[0] = "a1";
arr[1] = "a2";
arr[2] = window;
//var key = 1;
//var shieldPropertys = 1;
var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key + "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dialogWidth:400px;dialogHeight:360px;scroll:no;status:no");
});

子页面:
 <script type="text/javascript">
//js获取到的count为0
var parent = window.dialogArguments[2];
var test = parent.document.getElementsByName("i_1");

//jquery报错说不支持此方法
var rowIndex = $("div[alias='i_1']", parent.document).attr("rowsIndex");
alert(rowIndex);
</script>

[其他解释]
求大侠。。。自己顶一个先。
[其他解释]
可以讲父页面的document传过去,或者将你想要操作的div传过去,当做参数传过去


[其他解释]

引用:
可以讲父页面的document传过去,或者将你想要操作的div传过去,当做参数传过去


因为我在传值的时候不知道是要获取哪个div, div都是动态的.
在子窗口里面操作以后才能获取到alias, 然后再根据alias获取div的其他属性.
[其他解释]
引用:
JavaScript code?1var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key + "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dialogWidth:400px;dial……

更正一下:
1.不清楚你的showModelDialog具体什么时候执行,所以可能不是div未加载的原因;
2.var rowIndex = $("div[alias='i_1'][top='true']", parent.document).attr("rowsIndex");多个属性也一样,我上面的测试只用了一个属性。
[其他解释]
引用:
引用:
JavaScript code?1var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key + "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dia……


非常感谢你的回答, 在触发弹出窗口的时候, 父页面已经加载好了.
var rowIndex = $("div[alias='i_1'][top='true']", parent.document).attr("rowsIndex");
这样获取是未定义...
[其他解释]
引用:
引用:
JavaScript code?1var returnValue = window.showModalDialog("ControlSettings.aspx?key=" + key + "&shield=" + shieldPropertys + "&Rnd=" + Math.random(), arr, "dia……


已经解决, 感谢hangar_hyq 的帮助.
是我不小心在前面多加了一个window, 是按照hangar_hyq说的解决的. Thanks again.
var rowIndex = $("div[alias='i_1'][top='true']", parent.document).attr("rowsIndex");

读书人网 >asp.net

热点推荐