研究发现用元素的id可以直接返回该元素,而不用调用getElementById()方法.但我一直没有找到w3官方的说明呢?大家有哪个知道吗

xieranmaya 2009-04-21 08:09:06
<a id="a1" href="http://www.csdn.net">csdn</a>
<script>
alert(document.getElementById('a1').innerHTML);
alert(a1.innerHTML);
</script>
大家可以运行上面的代码.两个alert都会弹出"csdn"
而且在ie,op,ff和chrome中都正常
有哪位能给出一个官方的定义?
...全文
261 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwhack 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 caiying2009 的回复:]
变量命名
JScript 是一种区分大小写的语言,因此将一个变量命名为 myCounter 和将其命名为 mYCounter 是不一样的。 另外,变量的名称其长度可以任意,但必须遵循若干规则:.........
[/Quote]
大哥,这个是对变量的命名规则,而id只是叫我们定义一个能区分其他标签的一个名字而已。
dh20156 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 xieranmaya 的帖子:]
<a id="a1" href="http://www.csdn.net">csdn </a>
<script>
alert(document.getElementById('a1').innerHTML);
alert(a1.innerHTML);
</script>
大家可以运行上面的代码.两个alert都会弹出"csdn"
而且在ie,op,ff和chrome中都正常
有哪位能给出一个官方的定义?
[/Quote]

在W3C标准深入人心之前,相信很多人都是这样写的,还有document.all.a1等等的写法,这样写是可以运行的,当我们用FF测试时,你会发现控制台里有一条信息:


警告: ID/NAME 所引用的元素位于全局范围。请使用 W3C 的标准形式 document.getElementById() 。
源文件:http://www.v-ec.com/jslib/
行:4
monexus 2009-04-23
  • 打赏
  • 举报
回复
第一个字符必须是一个字母(大小写均可)、或一个下划线(_)或一个美元符 ($)
链接.innerHTML 显然不符合这条,虽然多数浏览器支持这样写,但不是全部都支持

如果<a id='123'></a>呢,不就不成立了
maximus_zhang 2009-04-23
  • 打赏
  • 举报
回复
警告: ID/NAME 所引用的元素位于全局范围。请使用 W3C 的标准形式 document.getElementById() 。 源文件:http://www.v-ec.com/jslib/ 行:4

caiying2009 2009-04-22
  • 打赏
  • 举报
回复
变量命名
JScript 是一种区分大小写的语言,因此将一个变量命名为 myCounter 和将其命名为 mYCounter 是不一样的。 另外,变量的名称其长度可以任意,但必须遵循若干规则:.........
caiying2009 2009-04-22
  • 打赏
  • 举报
回复
Microsoft(R) JScript(R)
JScript 的变量
JScript 教程
上一页
下一页




--------------------------------------------------------------------------------

在 Microsoft JScript 中变量用来存放脚本中的值。这是一个使用名称来检索和操作值的方式。如果能有效地使用变量,能有助于理解脚本所做的工作。
变量声明
尽管不是必须的,但在使用变量之前先进行声明是一种好的习惯。可以使用 var 语句来进行变量声明。只有当要在函数中声明一个局部变量时,才必须使用 var 语句。所谓局部变量就是那些只在函数内有效的变量。在其他任何时候,推荐方法是在使用之前先用 var 语句来声明变量。
下面是变量声明的代码示例:

var mim = "A man, a plan, a canal, Panama!"; // mim 中存储的值是 string 类型。
// 引号中的这句话就是赋给 mim 的值,为字符串文字。

var ror = 3; // ror 中存储的值为 numeric 类型。
var nen = true; // nen 中存储的值为 Boolean 类型。
var fif = 2.718281828 // fif 中存储的值为 numeric 类型。

变量命名
JScript 是一种区分大小写的语言,因此将一个变量命名为 myCounter 和将其命名为 mYCounter 是不一样的。 另外,变量的名称其长度可以任意,但必须遵循若干规则:
第一个字符必须是一个字母(大小写均可)、或一个下划线(_)或一个美元符 ($)。
后续的字符可以是字母、数字、下划线或美元符。
变量名称不能是 保留字。
合法的变量名称示例:
_pagecount
Part9
Number_Items
一些无效的变量名称:
99Balloons // 以数字开头。
Smith&Wesson // & 对变量名而言不是一个合法的字符。
如果要声明一个变量并进行初始化,但又不指定任何特殊值,可以将其指定为一个专用值 null。
var zaz = null;
var notalot = 3 * zaz; // 此时 notalot 为 0。

如果声明了一个变量但没有对其赋值,该变量存在,且为 undefined 类型。
var godot;
var waitingFor = 1 * godot; // 由于 godot 为 undefined 类型,因此 waitingFor 的值为 NaN。

如果直接对变量赋值,就隐式地声明了一个变量(即不使用 var)。不过,不能在根本没有声明的情况下就使用一个变量。这样做将导致运行时产生错误。
lel = ""; // 变量 lel 已隐式声明。

var aMess = vyv + zez; // 产生一个错误,因为 vyv 和 zez 不存在。

强制转换
由于 JScript 是一种自由类型的语言,JScript 中的变量在技术上没有固定的类型。不过,它们具有与其包含的值的类型等价的类型。在某些环境下可能将变量的自动转换(或强制转换)或数据的一部分强制为别的类型。Number 类型易于被包括在字符串中,但字符串不能直接包含到数值中,为此提供了显式的转换函数 parseInt() 和 parseFloat()。
var theFrom = 1;
var theTo = 10;
var doWhat = "Count from ";
doWhat += theFrom + " to " + theTo + ".";

执行该代码后,doWhat 变量的值为 "Count from 1 to 10." 其中的数字数据被强制为字符串格式。
var nowWhat = 0;
nowWhat += 1 + "10"; // 在本例中,由于 "10" 是一个字符串,
// "+=" 运算符其连接作用。

执行该代码后,nowWhat 变量的值为 "0110"。执行下述步骤可获得该结果:
查看 1 和 "10" 的类型。"10" 为一个字符串,1 为数值类型,因此该数被强制为一个字符串。
由于 + 运算符两边的值都是字符串,因此执行字符串连接操作。其结果为 "110"
查看 += 两边的值的类型。 nowWhat 包含一个数,而 "110" 是字符串,因此将数转换为一个字符串。
由于现在 += 运算符两边都是字符串,因此执行字符串连接操作。其结果为"0110"。
将结果存放到 nowWhat。
var nowThen = 0;
nowThen += 1 + parseInt("10"); // 在本例中 "+=" 执行加法。

执行该代码后,nowThen 变量包含整数 11。

----------
没找到规定:"不允许用中文命名变量"
^_^
zhaodalong 2009-04-22
  • 打赏
  • 举报
回复
用多了
就知道了!
友情 UP !
monexus 2009-04-22
  • 打赏
  • 举报
回复
楼上不要误导人,js哪有中文命名变量的
caiying2009 2009-04-22
  • 打赏
  • 举报
回复

<a id="链接" href="http://www.csdn.net">csdn </a>
<script>
alert(document.getElementById('链接').innerHTML);
alert(链接.innerHTML);
</script>


^_^
monexus 2009-04-22
  • 打赏
  • 举报
回复
LZ你想一下js变量不可以是中文,而html的id可以,这样你说的那个原则就不适用了
xieranmaya 2009-04-22
  • 打赏
  • 举报
回复
为什么呢..
monexus 2009-04-21
  • 打赏
  • 举报
回复
我觉得这算不上标准,个人认为应为id的作用是给元素一个唯一的名字,就好比你在给一个变量起名字一样。但当你的id值违反了js的变量名的命名规则(没有违反html的语法规则)时,这个就不起作用了
cb1156 2009-04-21
  • 打赏
  • 举报
回复
但是当页面元素过多的时候
这种方法行不通..
bing475879749 2009-04-21
  • 打赏
  • 举报
回复


标准是标准,写法是写法,好像没什么必要说明,document可以省,getElementById()也可以省都是没有错,也是标准的,就没必要说明了吧

以上是个人看法
xieranmaya 2009-04-21
  • 打赏
  • 举报
回复
上面的代码我测试了,,在op,ff和chrome下都是一样的结果
应该算是标准了啊
但就是找不到官方的说明
caiying2009 2009-04-21
  • 打赏
  • 举报
回复
<script> alert(a1.innerHTML); </script>
如果id="a1"的元素存在,IE默认JS中的a1就是这个元素(对象)

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧