删除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你够了!(#‵′)凸)
不说那么多,直接上代码。
var imgs = document.getElementsByTagName("img");
for(var i=0;i<imgs.length;i++){
var src = imgs[i].src;
var href1 = window.location.href.substring(0,location.href.lastIndexOf('/')+1);//IE
var href2 = window.location.href;//非IE
//alert(src);
//alert(href1);
//alert(href2);
if(src==""||src==href1||src==href2){
imgs[i].parentNode.removeChild(imgs[i]);
};
}
在谷歌浏览器下,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路径为空时,会显示一个大大的丑陋的叉啦!

删除src值为空的img标签的更多相关文章
- 判断一张图片有没有src值
我一开始一直以为判断一张图片有没有src值就是undefined呀 我知道这个 但是做起来发现出现了问题 if($('.img').attr('src') == 'undefined'){ conso ...
- IE9或以上的浏览器flash值为空时,导致domready不触发
在前些时间开发中遇到一个问题当flash值<param name="movie" value=""/>为空时,IE版本>=9不会触发domre ...
- 当freemarker中EL表达式的值为空时出现异常的解决方法
<#list pageView.list as msg> <form name="msgForm" id="msgForm" ...
- JS Bootstrap-DateRangePicker 如何设置默认值为空
DateRangePicker是一款时间范围选择器,界面良好,非常适合短时间范围选择的插件,具体源码可以在http://www.daterangepicker.com/找到 ,但是目前使用中,感觉功能 ...
- session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法
session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法: session_start()放在当前页代码的第一行即可解决该问题. 在本地上session_start()如果不是放在 ...
- ie 11 cookie 的值为空
昨天碰到ie 11上运行的程序时 登录老是登录不上去 一直是登录界面 最后检查半天发现时因为 权限验证登录时 获取cookie里的用户信息时 一直为空 便在网上查询资料 发现是因为ie11 里貌似 ...
- Activiti 删除key值相同的所有不同版本的流程定义
package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...
- Selenium2学习-013-WebUI自动化实战实例-011-WebElement.getText()值为空问题探索及解决
今天有个朋友在群里问 WebElement.getText() 值为空,当你发现取到的值为空的时候,会不会郁闷呢?明明看到的值不为空,脚本看着也没有问题啊,为何取到的值为空呢!!!万千纠结啊,若是长时 ...
- js获取浮动(float)元素的style.left值为空的解决办法
解决办法: 1.使用行内样式设置元素的top和left值; 2.or直接获取元素的offsetLeft得到相关数值,还不需要parseInt 问题原因: 如果父div的position定义为relat ...
随机推荐
- SQLite 入门教程 (终端)命令
一.基本简介 SQLite 是一个自持的(self-contained).无服务器的.零配置的.事务型的关系型数据库引擎.因为他很小,所以也可以作为嵌入式数据库内建在你的应用程序中.SQLite 被应 ...
- SQL Server 问题 1 - SQL Server encountered error 0x80070422/0x8007042d
今天执行SQL Server 2014的full-text search 查询操作:select * from table where contains(summary, 'smith') 报出如下错 ...
- c# socket 框架学习 SocketAsyncEventArgsPool 封装
public class SocketAsyncEventArgsPool{ //已使用记录 private List<Int32> usedRecord; //未使用记录 private ...
- Linux SSH 连接不上
http://blog.csdn.net/cryhelyxx/article/details/46473783 在xshell下用ssh登录远程主机centos出现以下问题: Connection e ...
- D3D11中的MSAA
这两年我的工作都转到了D3D11,目前新出硬件几乎全部支持此标准,加上D3D11接口清晰,概念直观,等到windows7普及,想必未来都是D3D11的天下.最近时间较空,我陆续开始写些基础文章,希望对 ...
- Cannot find SS.INI file for user *** 解决方法
昨天还用的好好的VSS今天早上一来就提示: Cannot find SS.INI file for user *** 度娘了一下,好像都是说的: 1,vss\users\***\ 下无文件SS.IN ...
- Python 之 MySQL 操作库 lazy_mysql
TOC Intro Installation Tutorial API Engine Pool Column Table Intro lazy_mysql 是一个非常简单易用,用来操作 MySQL 的 ...
- 聊聊 if else 那些事
从这周起,公司技术部每周五组织一次内部的技术分享,日常工作中,发现大家对if掌握的不是很好,今天先来聊聊if. 一.场景 简历的价格是根据专业的父Id设定的,下面根据简历Id获取简历的价格. /// ...
- WCF安全2-非对称加密
概述: 数字签名和加密依赖于相应的加密算法 自变量:加密前的数据.密钥 因变量:加密后的数据 加密算法分类:根据加密和解密这两种步骤采用的密钥的是否相同进行分类 相同:对称加密 不相同:非对称加密 非 ...
- 《微信小程序七日谈》- 第三天:玩转Page组件的生命周期
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 前两篇 ...