复制代码 代码如下:

document.getElementsByName(name)方法正是用来读取对象数组的。用法如下:
var elements = document.getElementsByName(“role”);
(”role”为CheckBox数组中每种CheckBox共同的名字)
for:

先来看概念,首先DOM是一棵树,其根节点是Document,差非常的少能够用下图来表示:
图片 1
所谓“近日的共有祖先元素”,是指给定一雨后春笋成分,寻找在树中深度最大的,但同时为具有那几个要素的祖先成分的要素。

/*
* JavaScript对象就是一组属性(方法)的集中
* 在该语言中假设变量名或方法名不切合申明标准,
* 则一定得用方括号“ [] ”引用它
*
*/
/**
*
<1.>该语句注明了三个class1类,class1约等于构造方法,又叫构造器
* 也可说申明了多个class1方法
*/
function class1(){
this.name=”xjl”; //给对象增多属性
this.say= function(){alert(“大家好!”);}; //给对象加多方法
};
/**
* <2.>创制实例用 new 关键字,new
操作符不仅仅对内部类平价,对客商定义的类也是一律的用法
* 每一种对象能够看作是多少个本性(方法)的集合,即 对象名.属性(方法)名 或
对象名[“属性(方法)名”]
* 方括号 ‘[]’ 适合不鲜明具体要引用哪个属性(方法)的场所
*/
var a = new class1();
//alert(typeof(a)); //typeof(a) 返回a的类型
//alert(a.name); //各种对象足以看做是三个属性(方法)的聚众,
//alert(a[‘name’]); //用方括号([])援用对象的天性和艺术
//下拉框对象名[下拉框对象.value] 即可得到客户所选的值 也可用
eval(“下拉框对象名.”+下拉框对象.value);
//a.say(); //调用对象的方法
//var arr=new Array();
//arr[‘push’](‘abc’); //为数组增多二个要素,在那之中的 push 为停放的性质
//arr[‘push’](‘1234’); //为数组增加贰个要素
//alert(arr);
/**
* <二.>动态增进、修改、删除对象的习性和艺术
*
*/
var obj = new Object();
//加多属性……个中的质量名可率性取
obj.name=”徐建龙”;
obj.sex = ‘男’;
obj[‘my name’] = “xujianlong”; //使用方括号 “ []
”能够运用非标准化志符字符串作为质量名称
//加多艺术……方法名也可任性取,也可传参数
obj.alert = function(a){
alert(a+”你好!”);
}
//修改属性,正是把品质的值改成别的内容
obj.name = “张三”;
obj[‘name’] = ‘anme’;
//删除属性,正是把品质的值改成 undefined 或 null
obj.name = ‘undefined’;
/**
* <三>使用大括号({})语法创制无类型对象
*/
//在大括号中方属性和艺术,属性与性格用逗号隔开分离,属性与值时期用冒号隔开分离
var ob = {
name:”123″,
say:function(){alert(“123”)} //最后八特性子或措施毫无逗号
}
//也可用如下方法定义对象的属性和方法
var ob1 = {“name”:’123′,’say’:function(){alert(“abcd”);}};
/**
*<四>prototype原型对象
* 全体的函数(function)对应的类是(Function)
* prototype 实际上正是表示了叁个类的积极分子的聚焦。
* *当通过new 来取得三个类的对象时,prototype
对象的成员都会形成实例化对象的分子。
*/
function class2(){ //创设一个目标
}
var ob2 = new class2();
class2.prototype.me = function(){alert(“123”);}
//在prototype的前头是,你所开创的类名
class2.prototype.name = “123”; //
/**
* 函数对象和别的中间对象的关系
*/
//typeof(new Function()),typeof(Function),typeof(Array),typeof(Object)
重临字符串“function”这么些参数称之为构造器
//typeof(new Date()),typeof(new Array()),typeof(new Object())
重回字符串“object”
/**
*
传递给函数的含有参数:arguments,它抱有数组的特色,但它不是数组,可用下标来访谈它
*/
//arguments 中含有了二个参数 callee, 它意味着对
函数对象自己的援引,如下:
var sum=function(n){
if(1==n)
return 1;
else
return n+arguments.callee(n-1);
}
//该语句表示声雀巢(Nestle)个 namespace1 的命名空间 ,如下:
var namespace1 = new Object();
namespace1.class1 = function(){alert(“123”);};
var obj1=new namespace1.class1(); //页面加载时就试行
/**
* 使用prototype 对象定义类成员
*/
//在创设实例的语句之后选用函数的prototype属性给类定义新分子,只会对前面成立的目标有效
//在prototype中的constructor()方法 ,也等于构造方法
function class1(){
//alert(‘adf’);
}
//class1.prototype.constructor(); //页面加载时就试行
//用prototype 定义的简化
class1.prototype={
//放入一些属性或艺术
//两日脾气或措施是用逗号(,)隔绝
}
//如下代码就是 静态方法和性质
class1.name=”abc”;
class1.say = function(){/*codes*/}
//利用反射机制,能够更换 element
中钦点的体制,而任何样式不会改动,得到了所要的结果,举例:
function setStyle(_style){
//获得要改换样式的分界面前遭逢象
var element=getElement();
for(var p in _style){
element.style[p]=_style[p];
}
}
//能够透过拷贝四个类的 prototype
到别的一个类来贯彻持续,但有破绽。举个例子:
// function class4(){}
//
// function class2(){
//
//
// class2.prototype=class4.prototype; //完毕的接轨
// class2.prototype.f = function(){alert(“a”);}
//
//当对class2 进行prototype 的更动时,class4 的prototype 也随着变动
// instanceof 操作符来剖断四个对象是不是是有个别类的实例, 比方:
var a = new class2();
a instanceof class2; //再次回到八个 bool ,假使 a 的class2中的承袭类,则也是 true
//一种越来越好的三番五次
for(var p in class1.prototype){
class2.prototype[p]=class1.prototype[p];
}
class2.prototype.ma=function(){
alert(123);
}
//当对class2 进行prototype 的转移时,class4 的prototype 不会转移
/**
* prototype-1.3.1框架中的类承袭完结机制
*/
//——————————————————————————————-
//该语句为每一种对象天加一个extend 方法,代码如下;
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
//将source中享有的质量或艺术都赋值给destination
}
return destination;
}
//通过Object类为每一种对象增添方法extend
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
Object.extend.apply(this,[this,object]);
//class1承继与class2 ,好处是 通过new
class2()也正是把class2的prototype的别本赋给class1
//在class第11中学的prototype的改换,不会影响class2中的prototyp
class1.prototype=(new
class2()).extend({/*class1要加进的脾性或方式*/});
/**
* 只做了一个扬言而未落实的不二秘诀,具备虚函数的类就称之抽象类
,抽象类是不可能实例化的
*/
//里虚方法不需经过注脚,而一直利用了。那一个艺术将要派生类中落到实处,比如:
function c1(){}
c2.prototype={
fun:function(){ this.fn();}//在那之中的fn方法未定义
}
function c2(){}
c1.prototype=(new c2()).extend({
fn:function(){var x = 1;}
});
//this.initialize.apply(this,
arguments);该语句是把创设对象时的参数字传送给initialize方法
/***
* 在javascript中也能够用 try-catch-finally 语句用于捕获非常或错误消息
* 个中在catch(e)的小括号中的e 是必需的 e是三个名称叫error 的目的
* e=new Error(message)来创建那些目标,卓殊的陈诉被用作error
对象的叁天质量message,
*/
//该代码演示了极度的抛出
function s(a,b){
try{
if(b==0)
throw new Error(“除数无法为零!……..”);
else
alert(a/b)
}catch(e){
document.write(e.message);///通过message 得到Error中的实参
}
}
onlaod=s(1,0);

getElementsByName范例

比如上海体育地方中,I和G的结果为C,G和H的结果为A,D和E的结果为html,C和B的结果为html等。

代码如下: /* *
JavaScript对象正是一组属性(方法)的集结 *
在该语言中倘若变量名或情势名不相符表明标准, *
则一定得用方括号…

分选剧中人物

测验驱动
对此偏逻辑的题,并从未充足的把握函数是科学的,因而照旧先构造测量检验的用命,力求让函数通过测量试验。

系统管理员 总老董 经销商 客服职员

此番就上述图的结构作为DOM结构,A表示body,B表示head,别的节点均使用div成分,同一时间以上文中所说的当作测量试验的输入和输出,先构造一下测量试验:

[Ctrl+A 全选 注:如需引进外界Js需刷新手艺实行]

复制代码 代码如下:

var elements = document.getElementsByName(“role”);
(”role”为CheckBox数组中种种Check…

function test() {
var result;
result = find(‘i’, ‘g’);
result.id !== ‘c’ && alert(‘fail (i, g)’);
result = find(‘g’, ‘h’);
result.id !== ‘a’ && alert(‘fail (g, h)’);
result = find(‘d’, ‘e’);
result.nodeName.toLowerCase() !== ‘html’ && alert(‘fail (d, e)’);
result = find(‘c’, ‘b’);
result.nodeName.toLowerCase() !== ‘html’ && alert(‘fail (c, b)’);
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注