发表于: 2016-09-08 00:19:18
4 2066
今天完成的事:
任务4
1.第一天的杀人和投票阶段
(杀人报告页面页脚有样式问题,明天再调)
明天计划的事:
1.继续任务4
收获:
1.element.id 更改对象ID(带变量的ID方便实用)
2.htmlFor用于更改label的for属性
3.安卓系统的开发者选项里有个显示布局边界的功能,可以用来判断一个APP是原生的还是web的。
(果不其然,修真院APP和桌游精灵APP都是webapp)
4.函数运行时会先执行所有声明,再从头开始执行语句。
(var,function之类,不包括子函数内的语句,也不会执行声明语句里的赋值语句,仅仅只声明)
比如
var a=0;
function b(){
console.log(a);
var a=1;
console.log(a);
}
第一个log将会输出undefined而不是0,第二个log输出1
同理对于全局声明也有类似的特性
5.“不管何时,checked属性的值发生变化的时候,onclick事件句柄就会触发(也可能触发 onchange 事件句柄)。”
(W3School原文,实验结果是onchange也有效)
6.display:none是看不见也不占位置,visibility:hidden是看不见但是占位置
7.空数组的值既非null也非undefined而是[],要注意用作条件判断时应该采用.length==0来判断
(但是空数组里的每个位置是undefined,比如空数组的array[0]就是undefined)
遇到的问题:
1.如何给用JS生成的input添加事件,用于激活函数
(element.事件=函数;只能分配一个函数,addEventListener则可以分配多个函数)
(添加事件语句要放在输出之后才生效?(比如appendChild之后)关于这点还没有详细验证)
(兼容性问题参考http://www.cnblogs.com/Rosefxd/p/4921330.html)
2.给对象添加事件后出现加载页面后自动触发事件的情况,并且手动触发事件是完全无效的
a.onclick=b(); //错误写法
a.onclick=b; //正确写法
a.addEventListener("click",b()); //错误写法
a.addEventListener("click",b); //正确写法
第一种写法是直接执行一遍b函数
第二种写法才是事件触发时运行b函数
但是如果这里是匿名函数,就会写成function(){}了
因为b()相当于function(){}()
真是挺奇葩的
得说,只有在HTML里写的时候才会写成onclick=b();这种形式。
JS里带了括号的意思是,执行该函数并返回值
也就是说a.onclick=b();的意思是执行b函数一次,返回值,赋予a.onclick,而不是绑定函数与事件
3.好了,新问题又诞生了,b函数是有参数的怎么办
(本来想用参数来表示被选中的input是第几个的,想想直接遍历一下checked状态就行了)
(刚发现用匿名函数就行了,其实上面就已经说出结论了,a.onclick=function(x){})
4.如何用JS控制input的disabled属性
(element.disabled=true,好吧这个有点弱智了)
评论