请问javascript的all问题?

JavaScript017

请问javascript的all问题?,第1张

第一,checked不是方法,是属性,所以可以考虑使用这样的语句:

obj.checked = true

obj是你的对象,不管你用使用得到的!如果通过id得到使用"document.getElementById()"方法,若是name一般才使用document.all(name)的方法得到对象的.

第二,在JS中是不刻意去区分单双引号的,若不出现矛盾的实体字符,两者是通用的!有如果用到实体字符时双没有使用编码这符则要分清哪一个是实体哪一个是定界符就可以了.一般对于数据的索引时使用〔〕,而对于名称与函数的索引时使用(),而在DOM结构的布置上,使用()比较合适,便使用〔〕则是利用的索引的方式,因为在JS中数组与把数组看作一个对象是没有区别的!

但两句话却是有区别的,document.all("name")是取出了一结果集(可能是一个对象数组)看作了一个对象,所以如果重文本流中存在name重复时,后边还可以加[]进行序号索引.如document.all("P1")[0]是指是第一个为name为P1的对象(或称元素),而使用document.all["name"]的结果只可能是一个对象,它实际上是第一个name的对象,后边不可能再跟序号索引了!在IE浏览器中还有一个特点,如果没有name时,其name值会默认为id同名,但这个只是DOM内部的,如果你用对象.name却不是可能得到值的,而使用类似以上的语句可以通过,但它的确遍历是是name属性,用查看工具可以查看到这一点的!

第三,请你重新考虑,==是比较运算,是优于三目选择运算的,所以只考虑true?false:true是错的,请你重新分析语句,但这里却是你的对象没有找到!也就是说:

document.all['kk']没有结果的!请你重新写语句.

第四.请你考虑一下运行的时间问题,你所写的语句是一开始加载时,如果加载到此处就会运行的,而此时可以你的input没有加载,所以此句不可写在input的前边.这句是即时运行的.同时,也只在加载中才会弹出一个错误或是结果,但至少加载完成后,你选不选input或是有什么样的操作都不可能再弹出的.这与问题3同!

任何的浏览器都可能对javascript的对象的方法或多或少的不支持的,而我们又不知道客户端会用什么浏览器来浏览我们的网页,那么,我们应该做的:

1)对方法进行判断 (比如判断document.all这个方法是不是被浏览器支持)

if(document.all){ //业务逻辑代码}

else{//...}

那么针对document.all不被指支持的情况,我们可以通过,下列方法来取得all可以取得的元素

1)document.getElementById("elementid")

2)document.getElementsByTagName("<input>")//这个是取得所有input对象

3)document.getElementsByName("elementName")

希望有所帮助。

(1)document.all是页面内所有元素的一个集合。 document.all[]这个数组可以访问文档中所有元素。document.all(0)表示页面内第一个元素

(2)document.all可以判断浏览器是否是IE

if(document.all){

alert("is IE!")

}

(3)也可以通过给某个元素设置id属性(id=good),然后用document.all.good调用该元素

(4)各浏览器中对 document.all 方法的支持不同,使用它获取元素引用可能造成兼容性问题。由于 document.all 方法存在支持程度问题,获取元素还是推荐用 W3C DOM 规范中提供的 document.getElementById、document.getElementsByTagName 等标准方法。