JS修改html文件中元素src属性失效的问题(已解决)

225 阅读1分钟

问题产生原因:

浏览器为了提高用户访问同一页面的速度,会对页面数据进行缓存。当url请求地址不变时,

有时候会导致浏览器不发送请求,直接从缓存中读取之前的数据。

如果数据改变了,而没加随机数,读取的数据会跟之前一样。

加上随机数,就是欺骗浏览器url改变了,会每次都向服务器发送请求而不去读缓存

找到的方法有:

一、JS,ajax请求地址后加随机参数,比如XXXX?t= + new Date().getTime()。

二、在url后面加一个随机数 url=test.jsp?number=Math.random();

解决代码转自:www.dongliqingdan.top/2022/12/30/…

document.write(“<script language= javascript src =’./jquery-1.8.3.min.js’>”);  
//addEventListener监听器放在生命周期函数里,让页面先渲染完  
window.onload = () => {  
//点击事件所绑定的页面元素  
let more01 = document.querySelector(“#YXlink01”);  
//监听事件所修改的页面元素  
let content01 = document.querySelector(“#YXcontent_more01”);  
//监听事件:鼠标点击  
more01.addEventListener(“click”,function(){

// $取到需要修改的页面元素,用attr修改地址,修改内容如下:
//核心代码↓
if(content01.style.display==”none”){  
content01.style.display = “block”;*

$(function () {  
$(“#YXlink_img01”).attr(“src”,”./resource/less.png?number=”+ Math.random()); 
});  
}else{  
content01.style.display = “none”;  
$(function () {  
$(“#YXlink_img01”).attr(“src”,”./resource/more.png?number=”+ Math.random());
});  
}  
})

//核心代码↑
// 监听事件:移动端触摸点击事件  
more01.addEventListener(“touch”,function(){  
if(content01.style.display==”none”){  
content01.style.display = “block”;  
$(function () {  
$(“#YXlink_img01”).attr(“src”,”./resource/less.png?number=”+ Math.random());  
});  
}else{  
content01.style.display = “none”;  
$(function () {  
$(“#YXlink_img01”).attr(“src”,”./resource/more.png?number=”+ Math.random());  
});  
}  
})