jQuery .text()和.innerHTML在IE中不起作用

时间:2010-11-03 05:15:23

标签: javascript jquery html

我正在尝试将一些文本添加到div中的某些跨度非常简单但我不能为我的生活让它在IE中工作。它适用于Chrome,Safari和Firefox。

继承人jQuery:

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

以及我正在编辑的html:

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

使用jQuery获取元素然后尝试设置.innerHTMl也不起作用。

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包含在页面加载后更新此数据的信息可能很重要。

3 个答案:

答案 0 :(得分: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]);

答案 1 :(得分: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

答案 2 :(得分:0)

显然,原因是jQuery的$('#foo')方法返回一个对象而不是一个元素。这里有一篇引人入胜的简短文章:http://markmail.org/message/nj3iclk6jnczshop

要解决这个问题,您可以使用该文章中建议的方法,我想象一下,但我这样做的方法是只使用jQuery的.html()方法而不是论点也是如此。