发表于: 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/


返回列表 返回列表
评论

    分享到