【发布时间】:2011-09-22 06:46:14
【问题描述】:
我有一些从 php 脚本动态生成的 html。 php代码是这样的
echo "<div id='categories'>\n";
foreach($category as $k => $v)
{
echo "<div class='category'>\n";
echo "<div id=\"$k\" class='cat_name'\n>$k</div>\n";
echo "<div id=\"$k".'_link"'." class='cat_link'>\n<a href=$v>Link</a>\n</div>\n";
echo "</div>\n";
}
echo "</div>\n";
我有一个 javascript 文件尝试像这样访问 dom
var categories=document.getElementById('categories').childNodes;
for(i=0;i<categories.length;i++)
{
var link=categories[i].childNodes[1].childNodes[0].attributes['href'];
..
...
..
现在这不能按预期工作,因为 html 中有文本节点。
当我使用firebug console 尝试这个时
document.getElementById('categories').childNodes[0].nodeType; // displays 3
它显示3,这意味着该节点是text node。
我尝试像这样在window.onload 中添加document.normalize();
window.onload=function() {
document.normalize();
var categories=document.getElementById('categories').childNodes;
...
...
但文本节点仍保留在 html 中。我怎样才能删除所有的文本节点。现在我认为没有像getElementByType() 这样的方法,那么我如何获取所有文本节点。
【问题讨论】:
标签: javascript html dom textnode