2010-11-10 84 views
0

亲爱的,我有以下脚本这里(不要怪我,我不知道的JavaScript在所有)原型IE,火狐,Chrome差异

$$('#status').each(function(item) { 

var state = item.innerHTML 

if (state == "ON_GOING"){ 
    item.replace('<img src="layout/images/ongo.png"/>'); 
} 
if (state == "PAUSED"){ 
    item.replace('<img src="layout/images/pause.png"/>'); 
} 
}); 

其存储在的底部文件。我也试着让它'命名',并从'body'标签的'onload'参数以及'window.onload ='语句中调用。 但它只能在firefox中正确显示,而不能在IE或Chrome中显示。 在Prototype文档中说它是为所有这些浏览器设计的,但是我仍然遇到这个问题,能否告诉我这段代码有什么问题,我应该如何编写它以使其工作(更新'status'id在页面加载后在html中)。

所以基本上我想用图像替换块中的初始文本,但它没有发生。

在此先感谢。

+0

你不是在说实际问题是什么? – 2010-11-10 11:11:20

+0

问题是,相同的代码在Firefox,IE7和Chrome中不显示相同的结果 – 2010-11-10 12:02:01

回答

2

对于字符串周围的空白可能存在浏览器差异。尝试剥离返回的HTML:

item.innerHTML.replace(/^\s*(.*?)\s*$/,'$1') 

更新:

你正在寻找此选择:$$('#status')这意味着你正在寻找一个ID status多个对象。我认为这不应该起作用。 Dom Id的意思是独一无二的。我认为你应该使用一个CSS类来代替,并将选择器更改为$$('.status')

+0

我已经用您的字符串更新了脚本,并用.update()函数替换了.replace()...现在可以用于Firefox和Chrome,但IE7仍然显示初始文本,而不是替换图像。 – 2010-11-10 12:03:11

+0

更新...似乎剥离空白不起作用,但使用update()而不是replace()使Chrome&FF正确显示内容 – 2010-11-10 12:10:16

+0

好的,这里有一个不同的想法,请参阅我的更新 – 2010-11-10 12:39:10