如何使用Javascript检索HTML标记并缩短我的代码

时间:2014-05-16 17:03:57

标签: javascript jquery

我的任务是使用下面的blockquote代码检索HTML标记。我用我的方法尝试了它,但它没有工作,我改变了另一种方式,即使它不是我认为的最佳方式。

我的第一次尝试并没有成功

search_title_temp_1 = $(search_title).closest("tbody").closest("tr").closest("tbody");
search_title_temp_2 = $(search_title_temp_1).find("tr").eq(1);
search_title_temp_2.hide();

这符合我的需要:

search_title_temp_1 = $(search_title).closest("tbody").closest("tr").closest("tbody");
search_title_temp_2 = $(search_title_temp_1).find(".noindex").closest("tr");
search_title_temp_2.hide();

  

请告诉我:

     
      
  1. 我的第一次尝试出了什么问题?
  2.   
  3. 如果您有其他解决方案来缩短我的上一个代码,请告诉我相关信息   建议将不胜感激。
  4.   

Demo

HTML:

<table>
<tbody>
    <tr>
        <td>
            <table>
                <tbody>
                    <tr>
                        <td title="Electric Consumption for May 2013" id="WebPartTitleWPQ3" class="ms-WPHeaderTd">
                             <h3 style="text-align:justify;" class="ms-standardheader ms-WPTitle"><a accesskey="W" href="/Lists/ElectricWaterConsumption"><nobr>
                <span>Electric Consumption for May 2013</span><span id="WebPartCaptionWPQ3"></span>
                </nobr></a></h3>

                        </td>
                        <td>123</td>
                        <td>123</td>
                    </tr>
                </tbody>
            </table>
        </td>
    </tr>
    <tr>
        <td class="" valign="top">
            <div width="100%" class="noindex ms-wpContentDivSpace">123</div>
        </td>
    </tr>
</tbody>
</table>

使用Javascript:

$("document").ready(function () {
var title = "Electric Consumption for May 2013";
var get_title = $(".ms-WPHeaderTd span");
for (i = 0; i < get_title.length; i++) {
    //alert(get_title.eq([i]).text());
    var search_title = get_title.eq([i]);
    if (search_title.text() == title) {
        alert(search_title.text());
        search_title_temp_1 = $(search_title).closest("tbody").closest("tr").closest("tbody");
        search_title_temp_2 = $(search_title_temp_1).find(".noindex").closest("tr");
        search_title_temp_2.hide();
    }
}
});

1 个答案:

答案 0 :(得分:1)

  

我的第一次尝试出了什么问题?

第一次尝试的问题是find("tr")获得所有tr个后代,而不仅仅是孩子。然后find("tr").eq(1)不是你想要的。

请改用:

$(search_title_temp_1).children("tr").eq(1);
  

如果您有其他解决方案来缩短我的上一个代码,请告诉我   了解这一点,任何建议将不胜感激。

您可以在https://codereview.stackexchange.com/

中询问有关工作代码的建议

我不会创建变量(如果你这样做,用var声明它们!):

$(search_title)
.closest("tbody").closest("tr").closest("tbody")
.children("tr")
.eq(1)
.hide();