我有一个Called.html的页面如下:
<html>
<head>
<script>
function test(){
document.write(document.getElementById("field").value);
}
</script>
</head> <input type="text" id="field" value="测试框"/>
<input type="submit" id="bu" onclick="test()" /></html>效果是点击按钮就在页面上写出文本框中的值。然后我想用另一个页面ClickTest.html来控制这个Called.html,就是说在另一个页面中点击一个button,
就相当于在Called.html中点击按钮。但是在ClickTest.html中连Called.html中某个元素的value都得不到,提示该id的元素为null。
why呢?下面是ClickTest.html的代码。请高手们不吝赐教,最好能完全实现我想要的功能:)
<html>
<body><script type="text/javascript">
function test(){
var win=window.open("Called.html");
win.document.getElementById("field").value="fsdff";
win.focus();
}
</script>
<input type="button" onclick="test()" />
</body>
</html>
<html>
<head>
<script>
function test(){
document.write(document.getElementById("field").value);
}
</script>
</head> <input type="text" id="field" value="测试框"/>
<input type="submit" id="bu" onclick="test()" /></html>效果是点击按钮就在页面上写出文本框中的值。然后我想用另一个页面ClickTest.html来控制这个Called.html,就是说在另一个页面中点击一个button,
就相当于在Called.html中点击按钮。但是在ClickTest.html中连Called.html中某个元素的value都得不到,提示该id的元素为null。
why呢?下面是ClickTest.html的代码。请高手们不吝赐教,最好能完全实现我想要的功能:)
<html>
<body><script type="text/javascript">
function test(){
var win=window.open("Called.html");
win.document.getElementById("field").value="fsdff";
win.focus();
}
</script>
<input type="button" onclick="test()" />
</body>
</html>
肯定为NULL了,因为JS是有作用域的.
纯粹用JS实现比较麻烦,后台实现比较方便和现实不过也可以这样实现你的需求.(伪代码,具体自行完善)
1.点击ClickTest.html页面中的button,然后widnow.open('Called.html?特定参数',..)最小化打开Called.html页面.
2.在Called.html页面用JS来判断传入参数是否有特定的参数,如果有,就调用 Called.html 中的特定Button.click事件.
如:这个是JS获取传入参数的(Called.html)
var strRight = location.search;
document.write(strRight);然后在判断strRight是否含有特定参数(Called.html)
var strRight = location.search;
document.write(strRight);
if(strHref.indexOf(特定参数)>0)
{
document.getElementById(特定Button).click();
}
<html>
<body>
<script type="text/javascript">
function test(){
var win=window.open("Called.html");
alert(win);//这里添加下alert后就正常了,初步判断是打开新页面后页面焦点到新页面了,导致
//下面的获取对应的id为field的dom节点为null
win.document.getElementById("field").value="fsdff";
win.focus();
}
</script>
<input type="button" onclick="test()" />
</body>
</html>其实从解决这个问题的角度看,完全没必要这么干:
可以把触发的逻辑放到Called.html里面的window.onload=function(){这里进行操作};
就ok了
<body><script type="text/javascript">
var win;
function test(){
win=window.open("Called.html");
}
function test1(){
win.document.getElementById("field").value="fsdff";
win.focus();
}
</script>
<input type="button" onclick="test()" />
<input type="button" onclick="test1()" />
</body>
</html>
恩,不错,我可以在ClickTest.html中写个form,然后提交到Called.html中,判断url就可以了。谢谢