2011-05-29 105 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