我希望你能帮助我。
当我单击按钮时,它将在文件扩展名ex。之前添加前一晚(interior-1.jpg更改为Interior-1night),但仅影响第一张图像,即interior-1.jpg。 我想要的是在“图片” ID下所有图片的文件扩展名前添加“夜晚”文本。
这是我的html代码
<button onclick="changeMode()">switch</button>
<img id="image" src="interior-1.jpg"/>
<img id="image" src="interior-2.jpg"/>
<img id="image" src="interior-3.jpg"/>
<img id="image" src="interior-4.jpg"/>
<img id="image" src="interior-5.jpg"/>
这是我的JavaScript代码
<script>
function changeMode() {
var filename = document.getElementById("image").src;
var modfilename = filename.replace(/(\.[\w\d_-]+)$/i, '-night$1');
document.getElementById("image").src = modfilename;
</script>
}
答案 0 :(得分:0)
您不应从不在dom中的元素上使用相同的id
名称。而是使用相同的class
名称。要将src应用于所有img
标记,请使用document.getElementsByClassName
获取所有标记。遍历每个元素并使用forEach
循环更改src
function changeMode() {
var filename = document.getElementsByClassName("image");
var a = '';
Object.values(filename).forEach((e) => {
a = e.src;
var modfilename = a.replace(/(\.[\w\d_-]+)$/i, '-night$1');
e.src = modfilename;
})
}
<button onclick="changeMode()">switch</button>
<img class="image" src="interior-1.jpg" />
<img class="image" src="interior-2.jpg" />
<img class="image" src="interior-3.jpg" />
<img class="image" src="interior-4.jpg" />
<img class="image" src="interior-5.jpg" />
答案 1 :(得分:0)
问题是您正在通过GetElementById
获取元素,而该元素仅返回一个元素。您应该像这样将id
标签更改为name
:
<img name="image" src="interior-1.jpg"/>
然后,您应该可以使用var els = document.getElementsByName('image');
现在您需要更改其文件名,所以
for (let i = 0; i<els.length; i++){
els[i].src = els[i].src.replace(/(\.[\w\d_-]+)$/i, '-night$1');
}
答案 2 :(得分:0)
这是我的两分钱。使用类。这样,您可以查询多个元素,而不仅仅是一个。然后使用forEach将更改应用于每个元素。
从document.querySelectorAll
返回的元素是nodeList
。这就是为什么我使用Array.prototype.forEach.call
。
function changeMode() {
const imageNodes = document.querySelectorAll(".image");
Array.prototype.forEach.call(imageNodes, (node) => {
let modfilename = node.src.replace(/(\.[\w\d_-]+)$/i, '-night$1');
node.src = modfilename
})
}
<button onclick="changeMode()">switch</button>
<img class="image" src="interior-1.jpg"/>
<img class="image" src="interior-2.jpg"/>
<img class="image" src="interior-3.jpg"/>
<img class="image" src="interior-4.jpg"/>
<img class="image" src="interior-5.jpg"/>