1

我有一些看起来像这样的 html,我需要 address1 范围、城市范围和州范围类的 innerHTML 内容,分别用于不同的 std-address 类。

<div id="result-list">
            <div class="data">
                    <p class="std-address">
                        <span class="address1 range">some html content</span>
                        <span class="city range">some html content</span>
                        <span class="state range">some html content</span>

                    </p>
                    <p class="std-address">
                        <span class="address1 range">some html content</span>
                        <span class="city range">some html content</span>
                        <span class="state range">some html content</span>

                    </p>
                    <p class="std-address">
                        <span class="address1 range">some html content</span>
                        <span class="city range">some html content</span>
                        <span class="state range">some html content</span>

                    </p>
            </div>
</div>

我编写了下面提到的代码,它工作正常,直到我在 IE 8 及更低版本上测试它

var addArrayX = document.getElementById("result-list").getElementsByClassName("std-address");


            for (i=0;i<addArrayX.length;i++){
                var address = addArrayX[i];
                stLine1 = trim(((address.getElementsByClassName("address1 range"))[0]).innerHTML);
                city = trim(((address.getElementsByClassName("city range"))[0]).innerHTML);
                state =  trim(((address.getElementsByClassName("state range"))[0]).innerHTML);
            }

请帮助我使此代码与 IE 兼容(最好使用 js 或通过 jQuery)

这是 html http://jsfiddle.net/H3HRN/9/​​的链接

4

5 回答 5

1

一般来说,如果有一个 DOM 函数不可用,请使用 polyfill 在不受支持的浏览器中实现类似的功能。对于许多功能,谷歌搜索[name of method] + polyfill会找到一段 js 代码,您可以将其包含在页面中,以使您的 js 跨浏览器工作。这是 getElementsByClassName 的一个

然而,如果你发现自己不得不填充大量的 DOM 方法,最好包含一个像 jQuery/Sizzle 这样的库。

于 2012-05-23T10:18:34.747 回答
0

jQuery方式:

var innerHTML = $('.className').html();

如果你想要resultListid 的孩子:

var innerHTML = $('#resultList .className').html();
于 2012-05-23T09:16:35.127 回答
0

jQuery:

$('#resultList .stdAddress')

恕我直言,如果您需要进行大量 DOM 选择,请继续使用 jQuery

于 2012-05-23T09:16:36.560 回答
0

在 jQuery 中,您的代码将如下所示:

$("#resultList .stdAddress").each(function() {
    var stLine1 = $.trim($(this).children(".address1").text());
    var city = $.trim($(this).children(".city").text());
    var state = $.trim($(this).children(".state").text());
});
于 2012-05-23T09:18:26.203 回答
0

如果你想使用 jquery,那么试试这个:

     $("[id*='result-list']").find("p[class*='std-address']").each(function () {
        var address = $(this).children("span[class*=address1]").html();
        var city = $(this).children("span[class*=city]").html();
        var state = $(this).children("span[class*=state]").html();

    });

见这里:http: //jsfiddle.net/H3HRN/20/

于 2012-05-23T09:20:41.883 回答