2010-11-03 129 views
1

我试图添加一些文本到一个div内的一些跨度很简单,但我不能为我的生活得到这个在IE中工作。它适用于Chrome,Safari和Firefox。jQuery .text()和.innerHTML在IE中不工作

继承人的jQuery的:

$("div#dateRanges #startDate").text(typeValues.dateRanges[1][0]); 
$("div#dateRanges #endDate").text(typeValues.dateRanges[1][1]); 

和继承人的HTML数据我编辑:使用jQuery来获取元素,然后尝试设置.innerHTMl也没”

<div id="dateRanges"> 
    <span id="startDate"></span> 
    <span id="endDate"></span> 
</div> 

工作。

var startDate = $("div#dateRanges #startDate").first(); 
startDate.innerHTML = typeValues.dateRanges[1][0]; //Sets the text date values 
var endDate = $("div#dateRanges #endDate").first(); 
endDate.innerHTML = typeValues.dateRanges[1][1];enter code here 

只是为了消除潜在的困惑,它是设置我遇到麻烦的跨度文本。另外,在页面加载之后通过AJAX包含这些数据正在更新的信息可能很重要。

+0

jQuery保证可以在所有常见的浏览器中工作,所以你的第一个代码示例应该工作得很好。 (或者也许你想用'html()'代替。)你确定'typeValues.dateRanges [1] [0]'包含你认为它的作用吗? – kijin 2010-11-03 05:27:22

+0

尝试使用IE8中的开发人员工具来遍历代码。我经常在IE上发现更好的调试信息。 – jellyfishtree 2010-11-03 05:30:49

+0

类型值是格式为“Month Year”的日期字符串我也这么认为,这就是为什么当这种情况发生时我很惊讶... – Joshkunz 2010-11-03 05:32:15

回答

1

对于第二个,您需要获取原始DOM元素。你可以用[0].get(0)

var startDate = $("div#dateRanges #startDate")[0]; 
var endDate = $("div#dateRanges #endDate")[0]; 

也许,text作品做到这一点,但你希望它改为被作为HTML处理。我想你可以使用html而不是在这里:

$("div#dateRanges #startDate").html(typeValues.dateRanges[1][0]); 
$("div#dateRanges #endDate").html(typeValues.dateRanges[1][1]); 
+0

var startDate = $(“div#dateRanges #startDate”)[0] ; 给我一个undefined – Joshkunz 2010-11-03 05:27:09

+0

文本不起作用,也没有html – Joshkunz 2010-11-03 05:27:33

+1

这只意味着没有匹配该选择器的元素。如果你想匹配元素而不管它的祖先是什么,你可以试试'$(“#startDate”)'。 – 2010-11-03 05:40:31

1

试试下面的代码,并确保typeValues.dateRanges不为空。

var startDate = $("div#dateRanges #startDate"); 
startDate.html(typeValues.dateRanges[1][0]); //Sets the text date values 
var endDate = $("div#dateRanges #endDate"); 
endDate.html(typeValues.dateRanges[1][1]); //enter code here 
+0

@Joshkunz:startDate.html(“Hai”) - >如果Hai会重新生成span的Html,那么这将是typeValues.dateRanges.Pls的问题。 – kbvishnu 2010-11-03 07:15:18

0

显然这样做的原因是,jQuery的$('#foo')方法返回一个对象,而不是元件。有一个关于它的迷人的短写在这里:http://markmail.org/message/nj3iclk6jnczshop

要解决这个问题,你可以使用的方法是文章中的建议,我会想象,但我确实是只使用jQuery的.html()方式方法没有参数,正如写法所提示的那样。