请指教javascript对象属性问题?

来源:百度知道 编辑:UC知道 时间:2024/06/23 23:54:54
请指教javascript对象属性问题?
<body>
<input type=button value=寻找 onclick="alert(document.body.childNodes[2].value)">
<input type=button value=寻找二 onclick="alert(document.body.childNodes[3].value)">
<button id="kk" onclick="alert(document.getElementById('kk').value)">好好好</button>
</body>

我点(寻找)按钮的时候,得到input对象的属性值为"寻找二",这没错

问题是,我点(寻找二)按钮的时候,得到的button对象的属性值为什么会是文本节点'好好好'

value是属性值,为什么点(寻找二)的时候会变成文本节点的内容去了,请指教!

我在button标记里没写value属性呀.应该显示的是undefinded呀.怎么会认到button的firstChild文本节点内容去了?

第二请问一下html的button标签有没有value属性?

第三个问题跟奇怪,第一个input后面会一个#text文本节点,为什么第二个input后面就没有#text文本节点?

是什么原因?请指教

这与DOM的工作方式有关。也就是说如果你写了<button value="AAA"/>与<button>AAA</button>是一样的作用。类似的标签自动将标签中的内容作为其value值的。所以,即使你没有定义value也会出现value值的,虽是一样,但两者还是不一样的!两者在DOM的节点生成树上是不同的。<button value="AAA"/>这种情况是一个节点对象,而该对象含有一个属性节点就是value,该属性节点的值是AAA,这样你可以画节点树了。而<button>AAA</button>则不一样,它的意思是生成了一个节点对象是按钮,它没有属性节点,而是将标答中的内容作为一个文本节点,将其插入到按钮节点中,但它只能做为它的下级节点,也就是做为value节点来插入的,这时的value不再是一个属性节点,而是一个对象节点了,而文本节点我们没有对其有任何的处理,value节点的类型是DOM内定的text的类型,凡是前边带有#的都是DOM内定的东西,它对我们来说几乎没有任何用途。而input则是一个铵钮节点与button又不相同,虽说它可以有value属性节点,但是在HTML中,这个可以没有结束标志的,也就是说:
<input type=""/>或<input type="">就可以了,后边的是不存在结束标签。如果你真的这样写的话:<input type="">AAA</input>,而DOM只会认识至文本AAA之前的东西,而AAA与input则没有任何关系了。AAA作为一个文本节点且与input是同级的兄弟关系。而</input>是一个不存在的标志,会被浏览器忽略的!

你的第二个问题也是很复杂的一个内容。任何对象都可以附加属性的。这是由于JS语言不是真正的OOPL造成的。一个例子吧:
function SS(){}//这是我定义的一个对象
pp = new SS();//这是生成的一个对象,也就是所谓的一个实例。
PP.height = 33;
而heig