2011-05-29 102 views
0

我有一個有點煩人的問題......我有一個JS函數,它在某個事件(單擊)上切換元素的圖像。該功能在多個頁面上執行。智能鏈接資源?

在JS,我有一個像雲,像這樣:

img.style.backgroundImage = 'url(../assets/img.png)'; 

一切工作完全正常,當功能被從存在於不同的文件夾一個文件名爲...文件夾結構是這樣所以:

  • /項目
    • /資產
    • /HTML
    • /JS
    • 的index.html

注意索引文件坐在父文件夾?當我從這個index.html文件執行函數時,圖像無法找到(因爲JS正在尋找父文件夾以外的感謝'../'),但它適用於HTML文件夾內的所有其他頁面,因爲相對路徑查找會出現在父文件夾中,然後轉換爲資產...

無論如何,我可以使這個智能而不必訴諸其他完全不同的方法?我知道我可以在這裏只依靠一些CSS,添加和刪除類來切換圖像,而不是直接更改圖像源...

它奇怪,但相對路徑工程從CSS的行爲作爲錨路徑查找器...但是,如果您使用JS更改css屬性,則html文件將成爲錨點...

+0

嘗試相對index.html文件 – Ibu 2011-05-29 03:05:20

+0

是啊,看看,從index.html文件中的相對路徑將是簡單的「資產/ img.png」路徑寫,而是因爲我設置路徑爲動態文件,調用路徑的HTML文件是不同的...所以,它不只是index.html,還有/html/text.html ...這就是奶酪半爛的地方... – Abhishek 2011-05-29 05:10:04

回答

0
img.style.backgroundImage = 'url("assets/img.png")'; 
+0

很好,如何解釋一下?加上你的代碼具有完全相同的效果,如果沒有錯誤,因爲路徑是不同的,所以它實際上不正確 – Ibu 2011-05-29 03:00:56

+0

沒有...我試過了,不起作用...同樣的問題,因爲index.html文件將無法找到圖像,因爲它會在父文件夾之外的路徑本身... – Abhishek 2011-05-29 03:03:35

+0

對不起,我忘了刪除第一個「/」。 當在路徑前面使用../時,這意味着您的路徑從父文件夾開始,而不是從當前的路徑開始 – 2011-05-29 03:05:00

0

使相對於站點的路徑不是當前頁面或樣式表。

當在CSS中包含相對url時,url是相對於CSS的url,我假設它位於assets文件夾中。

img.style.backgroundImage = 'url("/assets/img.png")'; 
+0

這樣做,將路徑設置爲從根目錄開始......基本上,它現在正在尋找一個名爲'資產'在我的C盤:大聲笑... – Abhishek 2011-05-29 03:11:03

+0

使用網址(/project/assets/img.png);其中項目是您的網站文件夾的名稱。 – 2011-05-29 03:15:01

+0

嗯......這被認爲是絕對的連接?我對此有點新...我的理解是,絕對鏈接需要提供完整的實際路徑...... – Abhishek 2011-05-29 05:08:28