• 删除src值为空的img标签


    今天刚刚完成了一个官网的前后台整站建设,虽然不是很复杂,但感觉获益良多。由于涉及到一点后台问题,所以期间遇到了不少问题。学到的东西,得作个总结。今天先讲讲img的路径问题。由于现在很多网站喜欢全屏大图滚动,而浏览设备的尺寸也变得越来越多,越来越大。所以解决图片适应性问题,变得更加复杂。

    切入正题,根据客户的设计需求,首页大图要满足以下条件:

      1,图片适应各种中大屏且全屏铺满;

      2,中间文字不能变形;

      3,可接受不加文字情况。

      所以,上面滚动大图就得实现图文分离,大图可延伸,文字居中。

      由于展示大图的数量是不定的,是否添加文本区域(用图片来实现)也是不确定的,所以后台通过循环输出。后台主要循环滚图容器和图片链接,对于那些没有添加文本图片的情况来说,img标签内的src不会赋予任何值,这时候src的值为空。如果在非IE浏览器下编写<img src="" alt="" >这样的标签是不会显示任何内容的, 可是在IE下会出现一个丑陋的红色叉叉。所以我们得把这个空的img标签去掉。

      那么如何找到这个标签并删除它呢?

      因为后台循环输出多个内容,设id来获取img是肯定不行的。使用能获取class名的库或者编写能获取class的函数,然后赋予循环的标签一个class,这样也可以。但是为了删除一个img而这样做,不到万不得已我也不想牺牲那么多代码。所以我肯定是使用标签名来获取的,var imgs = document.getElementsByTagName("img");

      那第二个问题是我怎么判断是这个标签呢?

      if(imgs[i]==""){}?

      不!NAIVE!

      原来当img标签的src属性值为空时,输出它的时候src值会是当前页面的绝对路径!

      那我这样写估计可以了吧?!

      if(imgs[i]==window.location.href){}

      图样图森破!

      在IE下img的src路径设置为空时,它会自动设成当前页面文件夹的绝对路径,但不包含当前页面!(IE你够了!(#‵′)凸)

      不说那么多,直接上代码。

     1 var imgs = document.getElementsByTagName("img");
     2      for(var i=0;i<imgs.length;i++){
     3             var src = imgs[i].src;
     4             var href1 = window.location.href.substring(0,location.href.lastIndexOf('/')+1);//IE
     5             var href2 = window.location.href;//非IE
     6             //alert(src);
     7             //alert(href1);
     8             //alert(href2);
     9                 if(src==""||src==href1||src==href2){
    10                     imgs[i].parentNode.removeChild(imgs[i]);        
    11                 };
    12      }

      在谷歌浏览器下,src弹出来的是 http://127.0.0.1:8020/demo/temp.html,也就是本页面的绝对路径;由于href1作了切割,所以href1弹出的是 http://127.0.0.1:8020/demo/;而href2也是当前页完整的绝对路径 http://127.0.0.1:8020/demo/temp.html。

      但在IE8浏览器下,src弹出来的却是http://127.0.0.1:8020/demo/。它没有包含本html文件,也就是说它只是本页面所在文件夹的绝对路径;href1和href2同上。

       chrome:   IE8:

      由于IE与其他浏览器之间存在差异,所以需要作两者的兼容性处理,substring()和lastIndexOf()结合使用,将前面共同部分截取处理作相等判断。

      在底部加了这段代码后,在IE下再也不用担心img标签的src路径为空时,会显示一个大大的丑陋的叉啦!

                

  • 相关阅读:
    JDK -GET,POST
    (三十四)什么是自动化测试模型之模块化驱动测试实例
    Linux 运维命令及知识
    python_检测一些特定的服务端口有没有被占用
    程序员常用网站
    网络安全与CTF在线学习资源网站
    MySQL_语句
    python脚本实现自动安装nginx
    超赞的Linux软件
    Python运维中常用的_脚本
  • 原文地址:https://www.cnblogs.com/chengguanhui/p/4647015.html
Copyright © 2020-2023  润新知