遇到的bug

遇到的bug都记录下来,避免自己犯相同的错误

  1. 在面向对象的程序中,如果设置了参数,但是调用该函数时,没有传入实参,那么就会报错。

    解决办法: 参数一定要传齐,或者书写形参的时候设置默认值.

  2. 要并排的两个div元素设为inline-block后,有一个元素会掉下来,这是因为行内元素会有一些对齐方式的问题

    解决方法:给两个div元素设为一个左浮,一个右浮

  3. 使用angular框架时,使用window.onload会导致出错

    解决方法:不需要使用window.onload就可以了

  4. li标签悬停时,会因为边框的原因导致li标签颤抖

    解决方法:给li标签加上和背景色一样的边框,这样鼠标悬停时只会改变边框的颜色而不改变边框的大小

  5. 搜索框不能和搜索按钮无缝连接,总是有1px的空隙

    解决方法:这是html页面换行导致的空格合并导致的空隙,只要把两个input在写html页面的时候收尾相连就可以了,或者直接左浮也可以。

  6. oh-my-zsh修改皮肤后,皮肤没效果并且iterm2报错

    解决方法:是因为修改皮肤的时候用了中文的引号,所以文件报错,当看起来很正常的文件报错时,就要注意语法、标点符号这些细节了。

  7. 不能直接在for循环中操作数组长度

    把要删除的元素放进一个空数组中,遍历完后再操作这个数组,而不是直接在for循环中删除元素

  8. 在sublime中不能直接通过ajax请求文件

    解决办法:通过sublime的插件httpserve来启动文件,就可以请求到文件,并且请求的文件一定要在当前目录下

  9. angular中,有bug一直调试不出来,后来发现是给控制器以数组的形式传入第二个参数的时候,前面的参数和回调函数中的形参个数不一致

    解决办法:angular中,控制器等的传的参数个数要和回调函数中的参数个数一样

  10. sublime的http servers插件启动不了

    解决办法:这是因为自己在iterm中启动了另一个servers服务,导致两者冲突启动不了,关掉iterm中的servers服务就好了

  11. 给div设置border,然后用四个绝对定位到可视范围外的div鼠标悬浮触发div覆盖border,结果四个div不能显示在页面.

    解决办法:overflow:hidden 的属性只包括盒子的content和padding,不包括border和margin,所以想要覆盖通过overflow:hidden来让覆盖border显示不不可行的,要在该盒子的下一层设置border,然后覆盖这层的border,这样就可以可以了。

  12. 使用c3属性transition做动画时,直接显示出来而不是以动画的形式出来

    解决方法:因为我把transition这个属性加在了hover的标签上,而没有加在

  13. 圣杯布局中,右边的div会掉下来

    解决方法:给中间的div设定宽度为100%,这个百分百是对于content的区域来说的,和padding物管,所以要先给中间的div设置两边的padding刚好为左右两个div的宽度,这样左右两个div就不占大div的宽度,再给中间的div设置宽度为100%就可以了,还要注意给中间的盒子和大盒子设置最小宽度.

  14. 流式布局中,遇到左右两个div的布局,缩放的时候两者的距离不可控

    解决方法:因为设置定位的时候两个div都是根据父盒子来定位的,所以缩放时肯定改变两者的距离,所以要根据他们的相对位置来定位,比如给两个div都绝对定位到同一个位置,然后给其中一个设置margin-left之类的,这样不管怎么缩放他们之间的距离都是不变的.

  15. 使用c3动画@keyframes以及animation属性时,老是写不对,动画出不来,

    解决办法:一开始是自己自己写错了@keyframes的名字,动画死活不动,后来动画不能定在最后一帧,百度解决,总结还是自己对c3动画还很不熟悉,要多做demo,读属性。

  16. cs属性中scale。tranlate等2d转换属性转换的时候很突兀,没有动画效果

    解决方法:加个transition: all 0.5s ease-in; get!

  17. 左边固定宽度,右边自适应的布局布置不出来

    解决方法:自己给右边的盒子设置了padding-left,这样是不对的.正确方法是左边的盒子要设置margin-left且为负值,右边的盒子设置width为100%,并且父盒子要设置padding-left为左边盒子的margin-left相对应的正的数值.

  18. 尾部的p标签在屏幕宽度不够分两行显示的情况下文字不能居中显示

    解决方法:负盒子不设高度,为了保证p标签上下留有空隙,可设margin-top和margin-bottom为相同的数值,同时p标签只设置行高即可

        <div class="copyright tac mt10 mb10 bgf5">
            <p class="fz14 lh20 c666">Copyright2012-2016 一起惠返利网             m178.hui.com 版权所有</p>
        </div>
    
  19. css属性要写两个同样的同样的样式才生效

    solution:这是因为自己在上一行css代码中最后加了一个分号,导致第一行代码不生效,

  20. 在用swiper类库做轮播图时,小圆点的默认样式是在图片里的,想要把小圆点放在图片外面

    sulution:在放小圆点的div下面再放一个div,以撑开整个轮播图盒子,因为小圆点用的是绝对定位,并且加的div盒子是空白的,所以给小圆点div设置bottom属性就可以把div盒子移下来了。

  21. 关于c3选择器nth-child多选的问题

    solution:选取前面的几个:nth-child(-n+b)

    选取后面的几个: nth-child(n-b) b为要选取的个数

  22. 在字符串拼接中,数据渲染不出来

    solution:一开始用的是html,这样是不行的,因为这样只会渲染最后一条数据,前面的数据都给覆盖了,要用append方法才行.

  23. 在做点击小火箭功能时,点击小火箭页面不以动画的形式滚动回顶部

    • 错误代码
    function toTop() {
        $(this).animate({'scrollTop':'0'}, 600);
    }
    
    • 正确代码
    function toTop() {
        $('body').animate({'scrollTop':'0'}, 600);
    }
    
    • 原因分析:给小火箭绑定滚回页面顶部当然不行了,要给页面绑定滚回页面顶部事件才行
  24. 点击按钮显示隐藏密码输入框是否显示字符

    function showPassword() {
        var password = $(".input-password");
        if (password.prop("type") == 'password') {
            password.prop('type','text')
        } else {
            password.prop('type','password')
            console.log(password.prop("type"));
        }
    }
    
  25. 用jq的方法html不能给input标签设置文本值,

    solution:单标签当然不能用html()方法,要用val()方法,

  26. jq中用html()方法更改标签内的值时,里面的子标签消失不见了.

    solution:这是因为html会把标签内所有的内容都当做文件节点来解析,所以里面的标签给设置的html内容替换了,所以当标签内含有其他内容时,不能用html(),应该用prepend()或者append()方法.

  27. 在ajax请求中无法请求到数据

    solution: 在php文件中,从前台发送过来的数据应该用$user = $_POST['user'];,注意数据格式用对象.
    还有一个,就是在php文件获取的是前台发送过来的json数据的。

  28. 发送ajax请求时,显示500 服务器内部错误

    solution:这一般是php文件出问题了,没写对,仔细检查每一个细节.

  29. 不通过点击a链接,直接用js或者jq控制页面跳转

    <!--JavaScript-->
    window.location.href = "http://www.sitefinity.com";
    <!--jQuery-->
    $(location).attr('href', 'http://www.sitefinity.com');
    
  30. html页面右边莫名出现空白,出现横向滚动条 。

    solution: 加上这条代码即可

    html{     
        width:100%;    
        overflow-x:hidden;
    }