鱼C论坛

 找回密码
 立即注册
查看: 3200|回复: 16

[已解决]javascript代码不报错又不运行

[复制链接]
发表于 2017-7-11 21:20:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 1314xxxxxx 于 2017-7-11 21:21 编辑

这个问题我弄了好几个小时。我只是个新手,不知道为什么按着书上的方法去做,但却总是没有成功。简直怀疑浏览器有问题。。。
为了不让大家误会,我事先说明一下:这个问题并非什么课堂上的课后题,我想来蹭答案;我并不是没有尝试改代码就来提问;我有在google上搜索;我有查看google控制台。
代码如下:(没写注释,sorry。可能导致程序不运行的地方我都做了个“*”号,另外说明一下,这个程序大概就是个躲避障碍游戏,有个黄色的div,会随着鼠标移动。其他的四个红色的div就是障碍,会不断进行运动。但是碰撞检测还没加上。)
<html>
<head>
        <style>
        #you {
                background:yellow;
                position:absolute;
                height:100px;
                width:100px;
        }
        </style>

        <script>
        window.onload=function ()
        {
                function getElementsByClassName(object,classname)
                {
                        var oObject = document.getElementsByTagName(object);
                        var re = [];
                        for (var i = 0;i < oObject.length;i++)
                        {
                                if (oObject[i].className = classname)
                                {
                                        re.push(oObject[i]);
                                }
                        }
                        return re;
                }
                var oYou = document.getElementById("you");
                var oDi = getElementsByClassName("div","di");
                
                document.onmousemove=function (ev)
                {
                        oEv = ev||event
                        var l = oYou.style.left;
                        var r = oYou.style.top;
                        if (l < 0)
                        {
                                l = 0;
                        }
                        else if (r < 0)
                        {
                                r = 0;
                                alert("You are win!")
                        }
                        else if (l > document.documentElement.clientWidth-oYou.offsetWidth)
                        {
                                l = document.documentElement.clientWidth-oYou.offsetWidth;
                        }
                        else if (r >document.documentElement.clientHeight-oYou.offsetHeight)
                        {
                                r = document.documentElement.clientHeight-oYou.offsetHeight;
                        }
                        else
                        {
                                oYou.style.top=oEv.clientY;
                                oYou.style.left=oEv.clientX;
                        }
                        
                        for (var i = 0;i < oDi[i].length;i++)*
                        {*
                                oDi[i].style.left = oDi.offsetLeft + 10 + "px";*
                        }*
                }
                
        }
        </script>
</head>
<body>
        <div id="you"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:0%;" id="di1" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:10%;" id="di2" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:20%" id="di3" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:30%" id="di4" class="di"></div>
</body>
</html>
如果有我满意的回答,奖赏5鱼币(忍痛中)!
最佳答案
2017-7-11 22:08:47

这样能否得到你的5C币???
<html>
<head>
        <style>
        #you {
                background:yellow;
                position:absolute;
                height:100px;
                width:100px;
        }
        </style>

        <script>
        window.onload=function ()
        {
                function getElementsByClassName(object,classname)
                {
                        var oObject = document.getElementsByTagName(object);
                        var re = [];
                        for (var i = 0;i < oObject.length;i++)
                        {
                                if (oObject[i].className = classname)
                                {
                                        re.push(oObject[i]);
                                }
                        }
                        return re;
                }
                var oYou = document.getElementById("you");
                var oDi = getElementsByClassName("div","di");
                
                document.onmousemove=function (ev)
                {
                        oEv = ev||event
                        var l = oYou.style.left;
                        var r = oYou.style.top;
                        if (l < 0)
                        {
                                l = 0;
                        }
                        else if (r < 0)
                        {
                                r = 0;
                                alert("You are win!")
                        }
                        else if (l > document.documentElement.clientWidth-oYou.offsetWidth)
                        {
                                l = document.documentElement.clientWidth-oYou.offsetWidth;
                        }
                        else if (r >document.documentElement.clientHeight-oYou.offsetHeight)
                        {
                                r = document.documentElement.clientHeight-oYou.offsetHeight;
                        }
                        else
                        {
                                oYou.style.top=oEv.clientY;
                                oYou.style.left=oEv.clientX;
                        }
                        
                        for (var i = 0;i < oDi.length;i++)
                        {
                                oDi[i].style.left = oDi[i].offsetLeft + 1 + "px";
                                                        /*alert(oDi[i].id);*/
                        }
                }
                
        }
        </script>
</head>
<body>
        <div id="you"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:0%;" id="di1" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:10%;" id="di2" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:20%" id="di3" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:30%" id="di4" class="di"></div>
</body>
</html>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-11 21:48:22 | 显示全部楼层
本帖最后由 不二如是 于 2017-7-12 06:26 编辑

首先,你要说“你这段代码”要干嘛。。。

其次,你看的是啥书

错误:
     for (var i = 0;i < oDi[i].length;i++)*
                        {*
                                oDi[i].style.left = oDi.offsetLeft + 10 + "px";*
                        }*


建议:
 for (var i = 0;i < oDi.length;i++)
                        {
                                oDi[i].style.left = oDi[i].offsetLeft + 10 + "px";
                        }




这两天,你发的问题,都是“没写索引位置[i]”,下次自己从这个开始排查
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 22:08:47 | 显示全部楼层    本楼为最佳答案   

这样能否得到你的5C币???
<html>
<head>
        <style>
        #you {
                background:yellow;
                position:absolute;
                height:100px;
                width:100px;
        }
        </style>

        <script>
        window.onload=function ()
        {
                function getElementsByClassName(object,classname)
                {
                        var oObject = document.getElementsByTagName(object);
                        var re = [];
                        for (var i = 0;i < oObject.length;i++)
                        {
                                if (oObject[i].className = classname)
                                {
                                        re.push(oObject[i]);
                                }
                        }
                        return re;
                }
                var oYou = document.getElementById("you");
                var oDi = getElementsByClassName("div","di");
                
                document.onmousemove=function (ev)
                {
                        oEv = ev||event
                        var l = oYou.style.left;
                        var r = oYou.style.top;
                        if (l < 0)
                        {
                                l = 0;
                        }
                        else if (r < 0)
                        {
                                r = 0;
                                alert("You are win!")
                        }
                        else if (l > document.documentElement.clientWidth-oYou.offsetWidth)
                        {
                                l = document.documentElement.clientWidth-oYou.offsetWidth;
                        }
                        else if (r >document.documentElement.clientHeight-oYou.offsetHeight)
                        {
                                r = document.documentElement.clientHeight-oYou.offsetHeight;
                        }
                        else
                        {
                                oYou.style.top=oEv.clientY;
                                oYou.style.left=oEv.clientX;
                        }
                        
                        for (var i = 0;i < oDi.length;i++)
                        {
                                oDi[i].style.left = oDi[i].offsetLeft + 1 + "px";
                                                        /*alert(oDi[i].id);*/
                        }
                }
                
        }
        </script>
</head>
<body>
        <div id="you"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:0%;" id="di1" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:10%;" id="di2" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:20%" id="di3" class="di"></div>
        <div style="background:red;position:absolute;height:200px;width:300px;left:0px;top:30%" id="di4" class="di"></div>
</body>
</html>

评分

参与人数 2荣誉 +6 鱼币 +11 收起 理由
1314xxxxxx + 1 感谢楼主无私奉献!
不二如是 + 6 + 10 欢迎一起打造Web板块

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 08:07:21 | 显示全部楼层
ba21 发表于 2017-7-11 22:08
这样能否得到你的5C币???

我今晚试试,要是行的话5鱼币就送你了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 08:09:30 | 显示全部楼层
多谢二位大神出手相助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 08:10:11 | 显示全部楼层
不二如是 发表于 2017-7-11 21:48
首先,你要说“你这段代码”要干嘛。。。

其次,你看的是啥书

太粗心大意了,下次肯定不会把索引搞错!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 13:09:14 | 显示全部楼层
ba21 发表于 2017-7-11 22:08
这样能否得到你的5C币???

我只能评分1次,1次只能送1鱼币。。。你再回四次,我来评分(sorry)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 13:53:25 | 显示全部楼层
ba21 发表于 2017-7-11 22:08
这样能否得到你的5C币???

另外问一下,第36-39行让黄色的div的left无法变成负数。可是,我用了Chrome控制台看了一下黄色div的left,发现可以为负数,这是怎么回事?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 14:12:30 | 显示全部楼层
1314xxxxxx 发表于 2017-7-12 13:53
另外问一下,第36-39行让黄色的div的left无法变成负数。可是,我用了Chrome控制台看了一下黄色div的left ...

哪里有负数了?黄色DIV左上角就是鼠标的指针,这样怎么也不可能会有负数。
2017-07-12_140935.png

评分

参与人数 1鱼币 +1 收起 理由
1314xxxxxx + 1 再发三次

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 15:41:18 | 显示全部楼层
ba21 发表于 2017-7-12 14:12
哪里有负数了?黄色DIV左上角就是鼠标的指针,这样怎么也不可能会有负数。

额,我的浏览器大概得重装了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 15:59:28 | 显示全部楼层
1314xxxxxx 发表于 2017-7-12 15:41
额,我的浏览器大概得重装了。。。

电脑估计也得换了

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
1314xxxxxx + 1 + 1 再发2次。。。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 16:31:30 | 显示全部楼层
本帖最后由 1314xxxxxx 于 2017-7-12 16:32 编辑
ba21 发表于 2017-7-12 15:59
电脑估计也得换了


的确。。。
对了,我后来多写了些代码,你来看看。
for (var i = 0;i < oDi.length;i++)
{
        var speed = Math.ceil(Math.random()*10)
        oEv = ev||event
                                                                
        if (oDi[i].style.left < 0)
        {
                oDi[i].style.left = "100%";
        }
        oDi[i].style.left = oDi[i].offsetLeft - speed + "px";
}   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 16:41:10 | 显示全部楼层
1314xxxxxx 发表于 2017-7-12 16:31
的确。。。
对了,我后来多写了些代码,你来看看。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 16:51:02 | 显示全部楼层

额,那啥。。。这段代码是用来让红色div移动并确保它不会移出可视区的,你看看有没有错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-12 16:55:23 | 显示全部楼层

话说为什么代码在FF上不兼容啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 16:57:27 | 显示全部楼层
1314xxxxxx 发表于 2017-7-12 16:51
额,那啥。。。这段代码是用来让红色div移动并确保它不会移出可视区的,你看看有没有错误。

有。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 16:58:20 | 显示全部楼层
1314xxxxxx 发表于 2017-7-12 16:55
话说为什么代码在FF上不兼容啊。。。

之 前的没问题,你改后的FF没黄DIV

评分

参与人数 1荣誉 +1 收起 理由
1314xxxxxx + 1 这是为什么呢?

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表