请教一下,哪里出问题

ぞ忆为言ボ 2019-04-30 12:37:36
想问一下代码有没有问题,如果没有的话,为什么浏览器打开后,div没有移动
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
潇湘忆梦 2019-04-30
  • 打赏
  • 举报
回复
引用 3 楼 ぞ忆为言ボ 的回复:
[quote=引用 1 楼 潇湘忆梦的回复:]仔细看了下,好几个问题: 1. 这段script在<head>里面,是获取不到<div id="box" ></div>控件的,要在div加载完成后,再去执行script; 2. box.offsetWidth是获取的div的宽度,document.box.offsetWidth是错误的写法,你可以去搜索下offsetWidth的使用方法; 3. box.style.left 获取或设置相对于具有定位属性(position定义为relative)的父对象 的左边距,要设置position的值; 4. setInterval调用函数,使用setInterval(Go, 2000)即可,参考:https://www.runoob.com/jsref/met-win-setinterval.html; 这段代码最好设置下div的宽高,移动幅度再大一点,加1像素,效果太不明显,判断那一块也是可以优化的。 修改后代码如下:

   <div id="box" >
        论坛<br />
        直播
    </div>
    <script type="text/javascript">
        var startmove;
        var box = document.getElementById("box");
        var speed = 20;
        var x = 100;
        var y = 300;
        var statusX = true;
        var statusY = true;

        var winW = document.documentElement.clientWidth - box.offsetWidth;
        var winH = document.activeElement.clientHeight - box.offsetHeight;

        function Go() {
            box.style.left = x + 'px';
            box.style.top = y + 'px';
            box.style.position = 'relative';
            if (x < 0) {
                x = x + 1;
            }
            if (x > winW) {
                x = x - 1;
            }
            if (y < 0) {
                y = y + 1;
            }
            if (y > winH) {
                y = y - 1;
            }
        }
        startmove = setInterval(Go, 2000);
    </script>
我也是有点闲了
好的,谢谢你的指导,因为我是刚学这个,所以一些东西还不是很懂[/quote] 都是这样过来的,你可以找案例学,比较快,下班了下班了,不看了
ぞ忆为言ボ 2019-04-30
  • 打赏
  • 举报
回复
引用 1 楼 潇湘忆梦的回复:
仔细看了下,好几个问题: 1. 这段script在<head>里面,是获取不到<div id="box" ></div>控件的,要在div加载完成后,再去执行script; 2. box.offsetWidth是获取的div的宽度,document.box.offsetWidth是错误的写法,你可以去搜索下offsetWidth的使用方法; 3. box.style.left 获取或设置相对于具有定位属性(position定义为relative)的父对象 的左边距,要设置position的值; 4. setInterval调用函数,使用setInterval(Go, 2000)即可,参考:https://www.runoob.com/jsref/met-win-setinterval.html; 这段代码最好设置下div的宽高,移动幅度再大一点,加1像素,效果太不明显,判断那一块也是可以优化的。 修改后代码如下:

   <div id="box" >
        论坛<br />
        直播
    </div>
    <script type="text/javascript">
        var startmove;
        var box = document.getElementById("box");
        var speed = 20;
        var x = 100;
        var y = 300;
        var statusX = true;
        var statusY = true;

        var winW = document.documentElement.clientWidth - box.offsetWidth;
        var winH = document.activeElement.clientHeight - box.offsetHeight;

        function Go() {
            box.style.left = x + 'px';
            box.style.top = y + 'px';
            box.style.position = 'relative';
            if (x < 0) {
                x = x + 1;
            }
            if (x > winW) {
                x = x - 1;
            }
            if (y < 0) {
                y = y + 1;
            }
            if (y > winH) {
                y = y - 1;
            }
        }
        startmove = setInterval(Go, 2000);
    </script>
我也是有点闲了
好的,谢谢你的指导,因为我是刚学这个,所以一些东西还不是很懂
潇湘忆梦 2019-04-30
  • 打赏
  • 举报
回复
待优化的有点多,把你的代码敲了一遍,后面判断也懒得改了
潇湘忆梦 2019-04-30
  • 打赏
  • 举报
回复
仔细看了下,好几个问题: 1. 这段script在<head>里面,是获取不到<div id="box" ></div>控件的,要在div加载完成后,再去执行script; 2. box.offsetWidth是获取的div的宽度,document.box.offsetWidth是错误的写法,你可以去搜索下offsetWidth的使用方法; 3. box.style.left 获取或设置相对于具有定位属性(position定义为relative)的父对象 的左边距,要设置position的值; 4. setInterval调用函数,使用setInterval(Go, 2000)即可,参考:https://www.runoob.com/jsref/met-win-setinterval.html; 这段代码最好设置下div的宽高,移动幅度再大一点,加1像素,效果太不明显,判断那一块也是可以优化的。 修改后代码如下:

   <div id="box" >
        论坛<br />
        直播
    </div>
    <script type="text/javascript">
        var startmove;
        var box = document.getElementById("box");
        var speed = 20;
        var x = 100;
        var y = 300;
        var statusX = true;
        var statusY = true;

        var winW = document.documentElement.clientWidth - box.offsetWidth;
        var winH = document.activeElement.clientHeight - box.offsetHeight;

        function Go() {
            box.style.left = x + 'px';
            box.style.top = y + 'px';
            box.style.position = 'relative';
            if (x < 0) {
                x = x + 1;
            }
            if (x > winW) {
                x = x - 1;
            }
            if (y < 0) {
                y = y + 1;
            }
            if (y > winH) {
                y = y - 1;
            }
        }
        startmove = setInterval(Go, 2000);
    </script>
我也是有点闲了

39,084

社区成员

发帖
与我相关
我的任务
社区描述
HTML5是构建Web内容的一种语言描述方式。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。
社区管理员
  • HTML5社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧