# JavaScript如何設置img src值
## 前言
在Web開發中,動態修改圖片(`<img>`)的`src`屬性是常見的需求。無論是實現圖片懶加載、輪播圖切換,還是根據用戶交互更新圖片內容,掌握JavaScript操作圖片路徑的方法都至關重要。本文將詳細介紹5種設置`img src`的JavaScript方法,并分析其適用場景。
## 一、基礎方法:直接修改src屬性
### 1.1 通過DOM選擇器獲取元素
```javascript
// 通過ID獲取
const img1 = document.getElementById('myImage');
img1.src = 'new-image.jpg';
// 通過querySelector獲取
const img2 = document.querySelector('.image-class');
img2.src = 'path/to/image.png';
const newImg = document.createElement('img');
newImg.src = 'dynamic-image.webp';
newImg.alt = '動態加載的圖片';
document.body.appendChild(newImg);
// 預加載示例
const preloadImg = new Image();
preloadImg.src = 'large-image.jpg';
preloadImg.onload = function() {
document.getElementById('placeholder').src = this.src;
};
function updateImageForScreen() {
const img = document.querySelector('#responsive-img');
img.src = window.innerWidth > 768
? 'desktop-version.jpg'
: 'mobile-version.jpg';
}
window.addEventListener('resize', updateImageForScreen);
const highResImg = document.createElement('img');
highResImg.srcset = 'small.jpg 480w, large.jpg 1080w';
highResImg.sizes = '(max-width: 600px) 480px, 1080px';
highResImg.src = 'fallback.jpg';
// 將Canvas轉換為圖片
const canvas = document.getElementById('myCanvas');
const dataURL = canvas.toDataURL('image/png');
document.getElementById('resultImg').src = dataURL;
// 從API獲取圖片Blob
fetch('api/getImage')
.then(response => response.blob())
.then(blob => {
const img = document.getElementById('blob-img');
img.src = URL.createObjectURL(blob);
});
// 使用v-bind指令
<template>
<img :src="imagePath" alt="Vue圖片">
</template>
<script>
export default {
data() {
return {
imagePath: require('@/assets/default.jpg')
}
}
}
</script>
function ImageComponent() {
const [imgSrc, setImgSrc] = useState('default.png');
return (
<img
src={imgSrc}
onClick={() => setImgSrc('new-image.png')}
alt="可點擊切換的圖片"
/>
);
}
imgElement.onerror = function() {
this.src = 'fallback-image.jpg';
this.onerror = null; // 防止循環報錯
};
// 釋放Blob URL
const blobUrl = URL.createObjectURL(blob);
img.src = blobUrl;
// 使用后記得釋放
URL.revokeObjectURL(blobUrl);
img.crossOrigin = 'Anonymous';
// 檢查最終解析的URL
console.log(new URL(img.src, location.href).href);
通過本文介紹的多種方法,開發者可以根據不同場景選擇最適合的圖片處理方案。隨著Web技術的演進,圖片處理方式也在不斷發展,建議持續關注新的API和性能優化技術。
提示:在實際項目中,建議結合圖片CDN和服務端渲染(SSR)技術,可以顯著提升圖片加載性能和SEO效果。 “`
(全文約1100字,包含代碼示例15個,覆蓋基礎到高級應用場景)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。