如何在 html 注释中找到包含特定文本的 html 元素?

Posted

技术标签:

【中文标题】如何在 html 注释中找到包含特定文本的 html 元素?【英文标题】:How can I find html elements that contain specific text in an html comment? 【发布时间】:2010-10-11 07:58:04 【问题描述】:

我正在尝试使用 jQuery 来识别包含特定 html 注释文本的

元素。标准的 ":contains" 选择器似乎没有考虑 cmets。我的上下文是我想向同一个 td 元素动态添加一些内容。这是目标 td 的示例:
<TD valign="top" class="ms-formbody" >
        <!-- FieldName="Title"
             FieldInternalName="Title"
             FieldType="SPFieldText"
          -->
            <span dir="none">
        <input name="ctl00$m$g_0b1e4ca3_9450_4f3e_b3af_8134fe014ea5$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_0b1e4ca3_9450_4f3e_b3af_8134fe014ea5_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Title" class="ms-long" /><br>
    </span>


        </TD>

此 html 是由 SharePoint 作为新列表项表单的一部分生成的,我真的想在我的文档中找到注释中“FieldInternalName”与某些文本字符串匹配的 td。如何使用 jQuery(或任何 javascript 都可以)来最好地找到这些 td 元素?

【问题讨论】:

【参考方案1】:

您可以获取元素的 innerHTML 并在其上运行正则表达式。

例子:

// HTML: <div id="myElement">Lorem <!-- a comment --> ipsum.</div>

var element = document.getElementById('myElement');
alert(element.innerHTML); // alerts "Lorem <!-- a comment --> ipsum."
// here you could run a regular expression

更新:更全面的示例(使用 jQuery):

var tds = $('td'), match;
tds.each(function(index, element) 
    match = $(element).innerHTML.match(/FieldInternalName="(^["])"/);
    if (match) alert(match);
);

【讨论】:

【参考方案2】:
if(document.getElementById('myElement').innerHTML.indexOf(text_string) != -1)  //do something 

【讨论】:

以上是关于如何在 html 注释中找到包含特定文本的 html 元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到具有特定注释的所有 Java 对象(不是类)?

如何使用漂亮的汤和重新找到包含特定文本的特定类的跨度?

使用 Bash (sed?) 删除包含特定文本 (regex) 的多行 /* ... */ 样式注释

将 html 附加到找到“包含”的文本

HTM5新手学习的一些日常总结,相互交流和相互学习。

htm,css,javascript及其他的注释方式