因为要支持跨浏览器,getElementsByClassName 在低版本IE浏览器中不被支持
是因为这个DOM没有查找呀
eles.push() 里面的内容把引号去掉,你往字符串里push东西当然没有用了
首先封装这个getByClass方法是为了替换getElementsByClassName(),最后的目的本来就是获取指定className下的元素标签,使用父级的getElementsByTagName()获取所有子标签,通过判断子标签的ClassName属性是否符合要求,将符合要求的子标签放进eles[]内,输出数组
push 是数组的一个方法,意思是将element[i]元素添加到数组eles中;
on+keydown keyup keypress 键盘事件
键盘事件要写在document上
keyCode为按下的键的编号,为10进制数。
把JavaScript代码放到body后面,加载完html元素,JavaScript才能读取到DOM元素,从上到下编译,CSS代码要放在body前,先渲染
这里返回的是对象,
parent ? document.getElementById(parent) : document
这是个三目运算表达式,?前面parent的值是否为真,是真的就执行:前面的式子也就是document.getElementById(parent),返回一个id是parent的对象,如果parent的值为假,就执行:后面的式子,这里是返回document对象;
因为你只给出了一行语句,我不清楚parent具体是什么,也许是个变量,里面有个字符串,这样也可以解释当parent值为真的时候执行document.getElementById(parent)。
如果父元素没有id属性,添加一个不就有了
这种情况很多,你没有代码只能靠猜,比如用getElementsByTagName,没有给getElementById绑定父类id
我觉行
可以的。只不过DOM0级事件处理程序不能多次处理同类事件,而DOM2级可以。
TagName是获取元素下所有的标签名的,再根据id匹配标签中的类
补充:对于那个id的元素是有class的,为啥不把class名加在 loginStateShow.className上!!!
这里的style.left是CSS里面的position的left,top也一样,你的CSS里面没有right,你给他值是没用的。
视频的右下角,有“资料下载”下面的“源码”右面的“下载”就可以下载了啊!
表示我而已遇到了
这个地方,parent 是一个变量,里面存储了另外的字符串,如果给 parent 加引号,写成 "parent" ,则代表字符串 parent ,而非变量 parent,加引号和不加引号所代表的含义是截然不同的。
str.replace(/(^\s*)|(\s*$)/g,"")
parent?document.getElementById(parent):document
这句话的意思是,如果 parent 有值,即有 id 作为参数传入,则调用 document.getElementById(parent) 方法获取该 id 对应的对象;如果 parent 为空,没有传入 id,那么 oParent 则默认取值 document,即当前整个页面对象。
因为你用的是span,是行内标签,所以宽度和高度不是像块元素那样是固定的,是根据内容大小改变的,也就是说,你设置的宽度对span不起作用,高度也是,行内元素和块元素是不一样的,给span设置高度和宽度没有意义
function byClass(cls,parentId){
var parents = parentId ? document.getElementById(parentId) : document,
ele = parents.getElementsByTagName('*'),
claArr = [];
for(var i=0,len=ele.length; i<len; i++){
var newClaArr = ele[i].className.split(" ");
for(var j=0,lens=newClaArr.length; j<lens; j++){
if ( newClaArr[j] === cls) {
claArr.push(ele[i]);
}
}
}
return claArr;
}
我这样写了之后可以
<div class="box boxw"></div>
<div class="box"></div>
这些都匹配出来,
但是当遇到有相同的项就蒙b了
<div class="box box2 box"></div>
<div class="box"></div>
.....
因为有兼容问题
eles是一个空数组,push,就是把每个elements[i]放到eles这个数组里面,当然也可以百度一下push,比较详细
如果有多个样式的话,会采取覆盖的形式执行就是如果有定义同一个属性比如background,后面定义的background属性会覆盖前面的background属性,你可以写一些例子体会下
因为在该课程的例子中:鼠标升起的事件的逻辑用不到event(鼠标升起时只需要将鼠标按下的事件处理程序关闭即可)。 在前面的鼠标按下的事件中,我们需要获取鼠标的坐标,所以需要event。
就是说,如果传入了父元素就把oParent设置成父元素,如果没传父元素,oParent就是整个文件。其实是如果传入父元素得到的就是该父元素下有这个class名称的元素,如果没传父元素,得到的就是文件中所有有这个class名称的元素。(class名称靠你function传入)
css文件中没看到这个 class啊!