我有一個檔案夾,其中包含 50 個州中每個州的一個影像。有些是 PNG 檔案,有些是 JPG 檔案。每個檔案的名稱只是狀態名稱,擴展名是 PNG 或 JPG。“Alabama.jpg”“Connecticut.png”等...
一個名為 stripState 的變數也只是每個狀態的名稱,它與影像檔案名完全相關。
我可以使用 JPG 的以下代碼呼叫并生成適當的影像:
stateImageDisplay.src = `state-pics-converted/${stripState.state}.jpg`;
以及 PNG 檔案的以下內容:
stateImageDisplay.src = `state-pics-converted/${stripState.state}.png`;
這僅在使用其中之一時才有效。所有 JPG 或所有 PNG 都將正確顯示。
我知道我可以將檔案夾中的所有檔案轉換為 JPG 或 PNG,但我想知道如何使用 JavaScript 在可用檔案之間進行選擇。
我想撰寫一個代碼來呼叫與“stripState”匹配的任何影像檔案……無論是 JPG 還是 PNG。如果“stripState”是“Kentucky”,則javaScript 使“stateImageDisplay.src”等于“Kentucky.jpg”或“Kentucky.png”……以存在的為準。
我想也許我可以使用“if 陳述句”來檢查是否找到了兩種檔案型別之一。如果是,請使用該型別,如果不是,請使用其他型別。像下面這樣:
if (`state-pics-converted/${stripState.state}.jpg` === undefined) {
stateImageDisplay.src = `state-pics-converted/${stripState.state}.png`;
} else {
stateImageDisplay.src = `state-pics-converted/${stripState.state}.jpg`;
}
我也嘗試將“未定義”替換為“onerror”,但沒有成功。
當“sought for”檔案擴展名不可用時,控制臺日志錯誤會顯示訊息“net::ERR_FILE_NOT_FOUND”。我不知道為了在 if 陳述句中使用它,它的等價物是什么......
有什么建議?提前致謝
uj5u.com熱心網友回復:
如果您在瀏覽器中作業(而不是使用 NodeJS),您可以嘗試加載一張影像并在加載錯誤時使用回退,如下所示
img.onerror = () => {
img.src = 'picture.jpg'
}
img.src = 'picture.png'
然后,您需要決定先嘗試加載哪個。
uj5u.com熱心網友回復:
我認為你的做法是正確的,但你的邏輯是錯誤的。我想通過為您提供各種您自己的解決方案來解決您的問題。
首先我想澄清一下,只有當我們談論服務器端 javascript 時,這個解決方案才可行。您無法撰寫訪問其他用戶 PC 檔案系統的代碼,因此客戶端 javascript 不會像那樣運行。
你寫了:
if (`state-pics-converted/${stripState.state}.jpg` === undefined) {
stateImageDisplay.src = `state-pics-converted/${stripState.state}.png`;
} else {
stateImageDisplay.src = `state-pics-converted/${stripState.state}.jpg`;
}
實際上,您正在使用字串值而不是實際的檔案系統路徑,即在您的條件陳述句(if 塊)中。JavaScript 正在閱讀您的代碼,然后“好吧,他要我檢查這個字串(a 默認為已定義/真實,因為它不為空)是否等于未定義”。
將始終定義非空字串。這就是為什么檢查 ifstate-pics-converted/${stripState.state}.jpg === undefined不起作用的原因。同樣,您實際上是在檢查字串是否未定義。
您必須做的是訪問實際的檔案系統,找到與狀態名稱匹配的任何檔案,然后確定該檔案是 png 還是 jpg。完成后,您可以將 stateImageDisplay.src 設定為正確的路徑。
本質上,您需要探索目錄 -> 找到與您想要的名稱匹配的狀態 -> 檢查其型別 -> 將其 src 值設定為。stateImageDisplay 的 src 屬性。
請閱讀此處了解有關使用檔案系統模塊的資訊,因為它存在于 NodeJs 中。
https://www.w3schools.com/nodejs/nodejs_filesystem.asp
然后看到這個問題Get list of filenames in folder with Javascript并向下滾動,看看人們如何閱讀目錄。
同樣,目標是專注于檢查與您的州名稱匹配的任何檔案的目錄,無論其擴展名如何。一旦你有一個參考實際檔案的變數,你就可以檢查它的擴展名。一旦你這樣做了,你就可以在你的條件中遵循邏輯流,但是使用檔案變數本身而不是字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/379178.html
標籤:javascript 图片 if 语句
上一篇:企業級日志系統架構——ELK(Elasticsearch、Filebeat、Kafka、Logstash、Kibana)
