用tagname获取到的是类集合
用findIndex,或者数据用filter 最好,不要用for了
getElementsTagName('table')[0]。可取到第一个table,第二个则getElementsTagName('table')[1].
代理事件则同样道理获取到td的父元素就行了
这个地方可以下载哝
发现精华里有人解决了,没事了
不好意思,我知道原因了,老师写的没错,我自己写错了,深刻反省
我没有看这个视频,不过你可以看下我的github上几个购物车的例子https://github.com/751357978
喜欢的话给我点个星星
sublime text 3不知道是不是这个,你用什么写都行,记事本都没问题
拥有相同类名的节点不是唯一的,一个页面内可能有多个同名类名,那么用js获取类名的方法,获取到的就是一个数组
待续。。。。。。。
在课程页面的右侧有个源码下载,里面有“物车(源代码)”下载
答非所问。js的缺点就是浏览器不兼容,算是致命弱点。
//如果有一个单选框不勾选则全选框取消勾选 如果全选则全选框同时被勾选
var selectedOne=function () {
var select=document.getElementsByClassName('check');//得到所有单选框的class
var selectAll=document.getElementById('selectAll');//得到全选框的class
for(var i=0;i<select.length;i++){//遍历所有单选框
if(!select[i].checked){//如果有一个单选框没有选中则全选框不被选中
selectAll.checked=false;
return false;
}else{//否则全选框被选中
selectAll.checked=true;
}
}
};
//只需要更改为你自己的className就可以了
Ctrl+Shift+Space 自动补全代码
jqj
我没用正则分割,而是把所有的类名按空格分割成数组,再遍历数组中的每项判断是否等于需要的类名。代码如下:
function className(name){
//如果浏览器支持getElementsByClassName则会返回所有类名叫name的,如果不支持才会遍历每个类名
if(document.getElementsByClassName){
return document.getElementsByClassName(name);
}
var doms=document.getElementsByTagName("*");
var arr=[];
for(var i=0;i<doms.length;i++){
var txt=doms[i].className.split(" ");
for(j=0;j<txt.length;j++){
if(txt[j]==name){
arr.push(doms[i]);
}
}
}
return arr;
}
举例说明: "1" == true 类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1; 此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1; 此时,"==" 左右两边的类型都为数值型,比较成功! 如果比较:"1" === true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false; 如果比较:"1" === 1 左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false; 如果比较: 1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true; 如果比较: 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false; 简而言之就是 "==" 只要求值相等; "===" 要求值和类型都相等 ^_^