以纯文本或XML格式解析HTML

时间:2011-07-27 03:33:15

标签: javascript html css

我有两个问题:

第1个问题:HTML元素可以有多个类(可以是多个类的一部分)吗?

<p class="paragraphClass" class="highlightClass"/> // is that allowed?

第二个问题:是否有一个javascript HTML解析器库或一组默认函数来搜索一串HTML&amp;给我所有具有特定类的HTML元素?我使用AJAX从服务器获取HTML(以文本而不是XML的形式返回),然后我需要将具有“可更新”类的所有HTML元素转换为文本区域HTML元素。

当我将HTML字符串作为文本或XML时,您认为将特定类的所有HTML元素转换为textareas的最简单方法是什么。

4 个答案:

答案 0 :(得分:2)

  

第1个问题:HTML元素可以有多个类(可以是多个类的一部分)吗?

是的,但是像这样:

<p class="paragraphClass highlightClass"/>

  

第二个问题:是否有一个javascript HTML解析器库或一组默认函数来搜索一串HTML&amp;给我所有具有特定类的HTML元素?

执行此操作的最简单方法是jQuery(惊讶,惊讶):

var html = 'your html in a string here',
    $html = $(html),
    $elts = $html.find('.someClassName');

// $elts is a (array-like) jQuery object which 
// contains all the elements in the HTML string with class 'someClassName'

有关详情,请参阅jQuery selectors API docs

答案 1 :(得分:1)

  1. 通过用空格分隔,你可以在任何元素上拥有任意数量的类。例如:

    <p class="paragraphClass highlightClass"></p>
    
  2. 使用jQuery等库来执行此操作。

答案 2 :(得分:0)

1)是的,但你的语法不正确。您可以指定多个以空格分隔的类,如:

<p class="paragraphClass highlightClass"/>

2)您可以使用一些元素.innerHTML属性将HTML插入DOM。该元素可能包含display: none;,因此不会影响您的网页。然后你可以在它们上使用普通的DOM方法,如document.getElementByClassName('updatable');注意,getElementByClassName()没有在IE中定义,所以你必须编写自己的,通过tagName选择,然后迭代匹配类,或使用像jQuery的。

答案 3 :(得分:0)

总是有jquery。您可以使用选择器选择该类的所有元素,然后将其转换为textarea。听起来你想要转换它来编辑那段。

$(".paragraphClass").each(function{
   $(this).replaceWith("<textarea>"+ $(this).text() +"</textarea>");
})

http://jsfiddle.net/bQgN3/