首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >document.getElementsByTagName("*")或document.all

document.getElementsByTagName("*")或document.all
EN

Stack Overflow用户
提问于 2010-01-20 02:27:25
回答 6查看 23.7K关注 0票数 3

document.getElementsByTagName("*")可以在IE/火狐/Opera上运行,但不能在Chrome和Safari上运行。

document.all可以在IE/Chrom/Safari上运行,但不能在火狐上运行。

我该怎么处理呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-16 21:19:48

应避免使用document.all,因为它不符合标准。相反,您可以对特定节点使用document.getElementById(),或者使用$("*")通过jQuery选择所有元素。

但是,如果您想要使用document.all,请确保从页面中删除<!DOCTYPE>标记,并从<html>标记中删除xmlns属性。

会像这样改变一切:

代码语言:javascript
运行
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

to:

代码语言:javascript
运行
复制
<html>

我已经在FireFox 19.0.2上测试过了,document.all对我来说工作得很好。

原因:当你使用<!DOCTYPE>标签时,你是在告诉浏览器你的网页不符合标准,而标准告诉你不要在脚本中使用document.all,所以浏览器也不允许这样做。

但是当您想使用它时,您显然没有遵循标准,所以甚至不要费心添加<!DOCTYPE>标记,否则document.all将无法工作。

票数 -1
EN

Stack Overflow用户

发布于 2010-01-20 02:31:31

试着这样做:

代码语言:javascript
运行
复制
if (document.all !== undefined)
{
   allElements = document.all;
}
else
{
   allElements = document.getElementsByTagName("*");
}

或更短的版本

代码语言:javascript
运行
复制
allElements = document.all ? document.all : document.getElementsByTagName("*");
票数 5
EN

Stack Overflow用户

发布于 2010-03-08 02:05:01

document.getElementsByTagName()在所有现代浏览器(所有比IE5更新的浏览器)中都能完美地工作。

如果它在Chrome或Safari中不起作用,那么它很可能只是你在其他地方遇到的错误的症状。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2095966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档