JS img知识发现

先说背景,早上老大开会说把前台所有img地址写死部分即域名为139那部分换掉,为了避免以后麻烦,干脆定义一个变量,地址直接是这个变量+具体地址,以后只要改这个变量就好了。我说好,心想直接<img src=变量+'具体地址'>,so easy。
结果打开html页面开始傻逼了。。。我真没见过变量直接写在html页面里的,我之前那种写法是写在js文件里的,不能混用。遂上网搜,发现了一种jsp写法,我又傻逼的这样写:<img src=<%=newUrl%>>,这不铁定错吗。。。
由于项目是jsp开发的,下意识的这样写,突然想到不对,这样写法里面应该是java,它又不能直接拿你js里面的变量去展示。。。
别流泪,继续想,继续搜。。。
终于,我找到答案了,看来基础太薄弱。。。
网上人家解答:

1
2
3
4
5
<img src="?" onload="this.src='图片地址';" onerror="this.src='图片地址';" />
1、img标签的src属性事先不放实际存在的图片网址,则网页显示后会触发img的onerror事件,那么
<img src="?" id=img1 onerror="nextpic();" />
2、img标签的src属性事先放入实际存在的图片网址,则网页显示后会触发img的onload事件,那么
<img src="123.gif" id=img1 onload="nextpic();" />

仔细想想我的需求,所有页面凡是图片地址是139开头的全部换掉并且用变量代替,再看看项目,由于是jsp页面,所以很多图片都是通过<c:forEach>语句循环生成的,那么那些图片的id也是不定的,js怎么取到每个图片呢,毕竟jsp从后台取到的数据是${good.imgUrl}这种类型的,js怎么读呢???
函数传参啊!

由于我们要求是很多不同的图片前面的域名是变量,所以图片一开始我们是没法放的,毕竟域名是变量啊,总不可能<img src=变量+"123.jpg">吧,如果能这样那我还想个屁啊。。。当然不能拉。
所以,我采用第一种方式,通过onerror调用一个函数并向它传参和this,不传this怎么确定具体是哪张图片,然后:

1
2
3
4
function nextpic(target, imageurl) {
// console.log(target)
target.src = 域名+imageurl;
}

完美,ok。就是图片加载稍慢。

Newer Post

JSP初学3

JSP指令JSP指令的基本语法格式:&lt;%@ 指令 属性名=&quot;值&quot; %&gt;举例:&lt;%@ page contentType=&quot;text/html;charset=gb2312&quot;%&gt;注意:属性名部分是大小写敏感的 在目前的JSP 2.0中,定义 …

继续阅读
Older Post

JSP初学2

请求重定向与请求转发本质区别:请求的转发只发出了一次请求,而重定向则发出了两次请求。 具体区别:① 请求的转发:地址栏是初次发出请求的地址。 请求的重定向:地址栏不再是初次发出的请求地址。地址栏为最后响应的那个地址。 ② 请求转发:在最终的Servlet中,request对象和中转的那个req …

继续阅读