首页技术文章正文

-【超实用的控制台推断bug方法】【黑马web前端】

更新时间:2019年07月26日 11时17分32秒 来源:黑马程序员论坛

  • 如下案例

  2.  出现的问题:
     2.1 问题1:无论如何点击蓝色按钮,盒子都没有变化
        找bug: 在函数的首行console.log(1),测试能否进入事件处理程序(function)
      
        然后浏览器点击蓝色按钮后在控制没有输出1,
        那么看24行的按钮有没有获取成功
    2.1 解决问题1:第一个按钮获取错误,蓝色按钮是 input[0]

    2.2 问题2:已经确保按钮获取成功之后, 然后浏览器点击蓝色按钮后在控制还是没有输出1,
        那么证明代码还是无法正确触发点击事件,无法运行到第26行,此时只剩下事件名字没有检查,再认真看
        
    2.2 解决问题2: 事件名click单词写错,把onclcik 修改为 onclick

    2.3 问题3:
        浏览器点击蓝色按钮后在控制台输出1了,但是再次出现问题:点击蓝色按钮,div盒子仍然没有变化
        找bug: 在box.style.backgroundColor = color;这行代码前面输入console.log(box),检查box元素是否出问题
        
       控制台的显示如下图:
      
   2.3 解决问题3:
       观看控制台发现,28行打印的是一个伪数组格式的数据,并不是一个标签结构,
        所以引发了第29行的报错....'backgroundColor' of  undefined...
        往前面找到box获取的地方,在第22行代码处,我们是通过getElementsByClassName("box")类名的方式获取元素的,这种方式获取元素,得到的是一个伪数组,伪数组里面存储的才是我们要的dom元素,我们需要通过索引box[0]的方式把dom元素获取出来
       所以,把第29行代码,修改为box[0].style.backgroundColor = "red"
                或者把第22行修改成   var box = document.getElementsByClassName("box")[0]
3.  原bug代码,大家可以尝试调试一下
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
.box{
width: 300px;
height: 300px;
background-color: lightpink;
}
</style>
</head>
<body>
<div class="box"></div>
<input type="button" value="蓝色" bgColor="blue"/>
<input type="button" value="橙色" bgColor="orange"/>
<input type="button" value="黄绿色" bgColor="green"/>
<script>
// 需求: 点击按钮切换颜色
var inputs = document.getElementsByTagName("input");
var box = document.getElementsByClassName("box");
//点击蓝色按钮,变box盒子变蓝色
for(var i=0; i<inputs.length; i++){
inputs[1].onclcik = function(){
var color  = this.getAttribute("bgColor");
box.style.backgroundColor = color;
}
}
</script>
</body>
</html>


推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!