2011-07-27 40 views
0

我有2个问题:解析HTML以纯文本或XML形式

1问:一个HTML元素可以有多个类(超过一个类的一部分)?

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

第二个问题:是否有一个JavaScript的HTML解析器库或设置的默认功能,搜索HTML &一串给我说有一个特定类的所有HTML元素?我使用AJAX从服务器获取HTML(作为文本不是XML返回),然后我需要将具有类“可更新”的所有HTML元素转换为文本区域HTML元素。

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

回答

2

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

是的,但这样的:

<p class="paragraphClass highlightClass"/> 

第二个问题:是否有一个JavaScript的HTML解析器库或一组搜索HTML &的字符串默认功能,给我所有的具有特定类的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. 通过用空格分隔它们,您可以在任何元素上添加任意类。例如:

    <p class="paragraphClass highlightClass"></p> 
    
  2. 使用图书馆像jQuery做到这一点。

0

1)是的,但是你的语法不正确。您可以指定用空格等分离不止一个类:

<p class="paragraphClass highlightClass"/> 

2)你可以使用一些元素.innerHTML属性只需要插入你的HTML到DOM。该元素可能有display: none;,以便它不会影响您的页面。然后你可以使用普通的DOM方法,如document.getElementByClassName('updatable');请注意,getElementByClassName()在IE中没有定义,所以你必须编写自己的选择tagName然后遍历它们匹配的类,或使用像jQuery框架。

0

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

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

http://jsfiddle.net/bQgN3/