2010-03-13 44 views
3

是否有可能为关闭div标签生成注释,考虑正常的HTML是否有可能为html生成结束注释

<div id="content"> 
... 
...buch of html or whateve 
</div> 

与评论:

<div id="content"> 
    ... 
    ...buch of html or whateve 
    </div><!--End of content--> 

等走线槽每个div元素和评论它的结束?

+0

用什么语言或什么平台? –

+0

@Pekka使用javascript ..或任何最有成效的 –

+1

但你想在JavaScript中完成结果存储在哪里?我认为这是一个工具的好主意,但你的用例是什么?处理本地文件?或者在调试过程中突出显示事物 –

回答

0
var divs = document.getElementsByTagName("div"); 
for (var d = divs.length-1; d >= 0; --d) { 
    var div = divs[d]; 
    var id = div.id; // d.getAttribute("id") 
    if (id) { 
    var cmt = document.createComment("End of " + id); 
    div.parentNode.insertBefore(cmt, div.nextSibling); 
    } 
} 
+0

没有内容只是示例div ..我的意思是,如果div id或class被命名的内容比评论应该说的无论它叫做什么 –

+0

@Gandalf:查看更新。 – kennytm

1

使用jQuery,这很简单。

jQuery('div').after('<!--end of content-->'); 

编辑:

jQuery('div').each(function(){ jQuery(this).after('<!-- end of '+jQuery(this).id + '-->');}); 
+0

它只是内容的结尾,因为内容是div id –

+0

没有内容仅仅是示例div。我的意思是如果div id或class被命名的内容比评论应该说的无论它被称为 –

1

下面是一个可能的解决方案,在PHP中,使用DOM:
使用PHP允许你保存它,或者任何你需要;而且由于它使用的是相当标准化的DOM,因此将其翻译为另一种语言不需要太多工作。
(而且,从你的问题中留言来看,你没有排除其他语言JS)

$html = <<<HTML 
<div id="content"> 
... 
...buch of html or whateve 
</div> 
HTML; 

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$divs = $dom->getElementsByTagName('div'); 
for ($i = $divs->length - 1 ; $i > -1 ; $i--) { 
    $div = $divs->item($i); 
    if ($div->hasAttribute('id')) { 
     $id = $div->getAttribute('id'); 
     $comment = $dom->createComment("End of {$id}"); 
     if($div->nextSibling) { 
      $div->parentNode->insertBefore($comment, $div->nextSibling); 
     } else { 
      $div->parentNode->appendChild($comment); 
     } 
    } 
} 
echo $dom->saveHTML(); 


它可以帮助您在下面的HTML源:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body> 
<div id="content"> 
... 
...buch of html or whateve 
</div> 
<!--End of content--> 
</body></html> 


有几件事要注意:

  • DOM允许一个加载和分析非有效的HTML
  • ,并产生有效的-HTML


而且,什么这样做:

  • 加载HTML字符串,使用DOMDocument
  • 搜索全部<div>标签
  • Foreach <div>标签:
    • 如果它有一个id属性,
    • 得到其数值
    • 创建基于该值
    • 评论并把它添加到DOM中,</div>标签

后考虑这个问题的另一个解决方案可能是使用XPath,而不是getElementsByTagName + hasAttribute ...

相关问题