如何使用JS / jQuery在IE中捕获注释nodeType 8?

时间:2012-06-01 13:19:49

标签: javascript jquery

我正在尝试捕获特定的注释行。以下代码适用于除IE以外的每个浏览器:

<script>
var llf = jQuery('.select').contents().filter(function() {
return this.nodeType === 8 // Comment node
})[2].nodeValue.replace("LLF: ", "").trim();
console.log(llf);
alert(llf);
</script>

这是HTML:

<td class="select" nowrap="nowrap" rowspan="3">
<!-- NON IDEAL REASON:  1 hour time window -->
<b>$423.59</b><br />
<b>&#163;267.50</b><br />
<!--  Policy Name: Investment Bank -->
<!--LLF: 1253.12 --> //This is the line I want to capture

如果有办法为所有浏览器做得很好但是如果你能想到IE +的特定解决方案条件评论也没关系。

谢谢!

1 个答案:

答案 0 :(得分:1)

IE没有String#trim,这是最近才在ES5中引入的,因此当您尝试使用它时会抛出异常。但是当您使用jQuery时,可以使用jQuery.trim代替:

var llf = jQuery.trim(jQuery('.select').contents().filter(function() {
    return this.nodeType === 8; // Comment node
})[2].nodeValue.replace("LLF: ", ""));
console.log(llf);
alert(llf);

Live copy | source - 在IE7和IE9中对我有用,所以我也假设IE8也是


我建议稍微破坏该语句(尤其是这样的问题更容易调试),并在=== 8之后包括分号。