预期的实验效果
   网页上有3个按钮
     按钮1: 创建,  单击后创建一个 名叫newfrm 的大小为10*可达像素高(screen.availHeight)
     按钮2:窗口变大, 单击后,newfrm以水平方向没秒增加50个像素的大小增大。下列任意一种情况发生,函数会终止  (1)newfrm的width到达screen.Width值。(2)用户点击了按钮3.
     按钮3: 停止变大,  单击后, newfrm停止变大//下面这段代码还没成功,  关键是在function amplify()中引用到的newfrm有点问题。应该怎么改才能实现预期的功能呢?
<html><body>
<script type="text/javascript">var stop_call=setInterval("amplify()",1000)
var newfrm
var x=10function create()
{
window.open("","newfrm",style="width: 10; height:screen.availHeight")
}
function amplify()
{
if(x<=screen.availWidth)
{
x=x+50
newfrm.resizeTo(x,screen.availHeight)
}
setInterval("amplify()",1000)
}function stop()
{
clearInterval(stop_call)
}</script>
<input type="button" id="b1" value="创建新窗口"onclick="create()"/>
<input type="button" id="b2" value="窗口变大" onclick="amplify()"/>
<input type="button" id="b3" value="停止变大" onclick="stop()"/>
</body>
</html>

解决方案 »

  1.   

    setInterval是循环执行..
    你试试 setTimeout???
      

  2.   

    function amplify()
    {
    if(x<=screen.availWidth)
    {
    x=x+50
    newfrm.resizeTo(x,screen.availHeight)
    }
    //setInterval("amplify()",1000)
    }
    前面已经setInterval过执行amplify方法了,函数里不需要再setInterval
      

  3.   


    不能改变窗口的大小;可以用div来模拟窗口;然后改变大小
      

  4.   

    <script type="text/javascript">
            var newfrm, x = 10, stop_call;
            function create() {
                newfrm = window.open('', 'newwindow', 'height=50,width=50,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
            }
            function amplify() {
                if (x <= screen.availWidth) {
                    x = x + 50;
                    newfrm.resizeTo(x, screen.availHeight);
                }
                stop_call = setInterval("amplify()", 10000);
            }
            function stop() {
                clearInterval(stop_call);
            }
        </script>
      

  5.   

    关键是用newfrm来接受window.open的返回值,这样你就得到了新窗口的引用。
    setInterval要改成setTimeout;
    当x已经大于screen.availWidth以后就不要再setTimeout了
    (要把setTimeout那行放进if语句里面去)。var x = 10;
    var stop_call;
    var newfrm;function create() {
    newfrm = window.open("","newfrm",style="width: 10; height:screen.availHeight");
    }
    function amplify() {
    if(x<=screen.availWidth) {
    x=x+50;
    newfrm.resizeTo(x,screen.availHeight);
    stop_call = setTimeout("amplify()",1000);
    }}function stop() {
    clearTimeout(stop_call);
    }
      

  6.   

    呃,上面论坛代码用错了,更正一下;
    另外更正后满足你窗口起始宽度为10,高度为屏幕高度的需求:
    var x = 10;
    var stop_call;
    var newfrm;function create() {
    newfrm = window.open("about:blank","newfrm", "width=10,height=" + screen.availHeight);
    }
    function amplify() {
    if(x<=screen.availWidth) {
    x=x+50;
    newfrm.resizeTo(x,screen.availHeight);
    stop_call = setTimeout("amplify()",1000);
    }
    }function stop() {
    clearTimeout(stop_call);
    }