发表于: 2016-10-05 10:15:54
0 674
今天完成的事情:
今天和昨天晚上都在折腾任务9的那个JS函数,成功了一个,另外一个有蛮大的问题,但是没办法解决。
虽然最后并没有成功,但是结果还是好的,完成了任务,在群里问到了其实明明可以直接去看任务技能树就能做到的方法。
不得不说CSS还是很精妙的,它还是很活的~~
今天学会了很多,都是一些小的细节的东西。虽然JS的写法没成功,但是也锻炼了一下,并且学到了一项新技能,也就是这个任务技能树里面的
三句CSS代码就能完成的任务----美化radio按钮,让按钮“不再”是浏览器默认样式。代码我就不贴出来了,技能树上面有。
明天计划的事情:
明天计划要写点JQ小练习,完成后再接着看看任务十的要求,LESS,SASS我都还没有学过,只接触了SASS一点点,然后计划用接下来几天看看SASS
和手机,平板兼容怎么写,记得之前看到过一篇文章说苹果像素跟一般手机像素不一样,好像是屏幕是四个像素等于一个像素,这样苹果的手机才会
更清晰,所以苹果的写法可能会不一样。
遇到的问题:
遇到的问题主要是关于radio表单美化,写的JS上面出现的问题:
因为之前在网上看了一个视频,讲的是不使用input标签,而是使用一个div标签用图片切换的方式来模拟选中radio。
但是他并没有讲真的需要选中radio的情况,所以我就尝试了一下写一下JS来完成这个目标。
我使用了三个标签:input(radio) , button , label ,input的id属性值与label的for属性值相同。button也有一个id属性,是input的id属性值再加上
“-but”。为什么用button标签模拟呢,因为我需要设置他长宽高,所以想要一个块元素,页面上太多div了,我要获取他们的时候很难获取,不知道第几
个是他们,因此使用了button。
要解决的问题有两个:
第一点,目前在HTML上,label标签已经绑定好input标签了,但是点击label里面的文字的时候,input虽然绑定了,但是假radio:button并没有变化。
第二点,点击假radio:button的时候,没有图片的变换以及真正的选中radio。
然后我的思路是:
1、点击label选中button: 查找到目前点击的是哪个label标签 → 然后通过获取label标签的for属性值 + “-but”,得到当前我们要显示的那个假
radio:button的id值 → 再通过上面得到的值,用getElementById的方法找到他,并且给他修改class类名,让他可以显示出变化。
2、点击button选中input:查找到目前点击的是哪个button标签,先把他的class类名修改了 → 获取它的id值,匹配到“-but”前面的值 → 然后
通过getElementById找到input标签,给input标签添加checked属性。
其他部分的话就是一些循环去除掉同一行之前有被选中的小伙伴的input的checked属性或者是修改button类名。
结果:
第一个我成功实现了,并且检测代码没有问题。
第二个有点小问题,虽然实现了功能,但是有个bug,就是在同一行,点击好几次以后,无法再给input添加checked属性,它不能再被选中了。后来我
去群里求助。有位师兄帮我看了一下代码,也找不出原因。我到网上查找的时候,有些人使用JQ写类似的代码的时候也出现问题,但是解决方式都是
JQ的。这个问题目前我还没能力解决,以后我学习的再深入一些,多掌握一些纠错的方法,再来继续探索究竟是哪里出现的问题。
收获:
最大的收获就是写的JS代码有问题,浏览器抛出的错误是很有用的,如果它跟你说XXX不是一个函数,你应该先回去检查它拼错没有,然后再检查
是不是对象搞错了,它其实没有这个方法,或者说不能对它使用这个方法。还有的就是一些小收获,学会了使用一些方法之类的。
闭包有一个问题,for循环的时候,不能把for循环当前得到的会变化的那个条件值i,赋值给闭包内部使用。我在网上找到了一个好方法,可以不用给闭
包添加立即执行的(),既能把条件值传递进闭包里,又能保留把整个函数赋值给闭包的那个函数。
var as = document.getElementsByTagName('button');
for ( var i = as.length-1; i--; ){
var a = function(i){
as[i].onclick = function() {
alert(i);
return false;
}
}
a(i);
}
附上服务器地址:http://119.10.57.69:880/jnshu074/
评论