javascript中为什么有些标签可以通过 name属性.name属性.属性 这种方式获取到属性值? 10

<body><imgname="img1"alt="thisisimg1"src=""hidden=""/><imgname="img2"alt="thisisimg2"... <body> <img name="img1" alt="this is img1" src="" hidden="" /> <img name="img2" alt="this is img2" src="" hidden=""/> <form name="sform" action=""> <img name="img3" alt="this is img3" src="" hidden="" /> <input name="input1" type="text" hidden="" value="this is input1"></input> <a name="a1" href="" hidden="">a1</a> <p name="p1" hidden="">this p</p> </form></body><script type="text/javascript"> //img 不管在form内还是 form外通过 name属性.属性 可以直接获取到alt属性; document.write(img1.alt+"<br/>"); document.write(img2.alt+"<br/>"); document.write(img3.alt+"<br/>"); document.write(sform.img3.alt+"<br/>"); //在form内的input 通过form的 name属性.input的name.value 可以获取到value document.write(sform.input1.value+"<br/>"); //在form内的 a、p 标签通过 form的name.name.属性 均取不到数据 document.write(sform.p1.innerText); document.write(sform.a1.innerText);</script> 展开
 我来答
百度网友94777f9
2017-03-01 · 超过10用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:7.2万
展开全部

这其实是王八的屁股,规定。是JS本身自带的对于特殊元素的简便选取的方法。

在html中,一般最直接的辨别html元素使用的是name和id属性,两者有着细微的不同:id必须页面唯一,但name可以有重复。

在JS中如果id名称不和内置属性或全局变量重名的话,该名称自动成为window对象的属性,而在一个html页面中的最顶层环境中有:

this === window

所以如果我们写一个如下的html元素代码就可以这样引用它:

<input type="button" id="btn" value="Ok" />

<script>
    //可以这样引用
    btn.onclick = function(){};
    //或者这样
    window.btn.style = '...';
</script>

对于name属性来说,只有某些类型的html元素具有类似的方法。在这些元素中可以通过全局变量或者document的属性来访问特定name属性的元素,例如:

<div>
    <img name="pic" src="#" alt="pic_0" />
    <img name="pic" src="#" alt="pic_1" />
    <img name="pic" src="#" alt="pic_2" />
</div>

<script>
    //可以这样引用name为pic的元素:
    for (var i = 0; i < pic.length; i++) {
        console.log(pic[i]);
        console.log(window.pic[i]);
    };
</script>

备注:id可以选取所有元素,name具有类似方法的元素:form, img, iframe, applet, embed, object (。。。)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式