1、在js中用console调试是个不错的方式,但是在IE8中却有不支持的现象,会导致你的js出错,所以在开发的时候使用console在firefox中调试可以,
但是,调试完成之后一定记得删除,要不会在IE8中有影响。注意。
2、fiddle:
REGEX:http://www\.jykc\.net/exam/js/oneui/knowledge_map\.js\?_=\d{13}
3、获取元素上绑定的事件:
$._data($('#btn')[0],'events'):1.8.2,因为在这个版本中.data()被移除了。[0]不能少
$.data():用于其他版本
4、给document加事件,回调里的元素可以先没有:
$(document).keydown(function(event){
console.log('keydown 1');
$('#test').css('color','red');
});
$('#save').click(function(){
$('#abc').html('<div id="test">123</div>')
})
5、
闭包学习时,会找<li>的内容,使用事件代理。受这个影响,删除li时,也会用事件代理(父元素)。其实可以给元素加class,给class加事件。
给元素加click事件,如果元素是之后通过.html()方法加载的,则click事件无效
给元素加click事件,删掉该元素,增加该元素,click之后没有反应了。
6、碰到的一个问题:
argsdata.name = 'klm'; var node = {}; node.age = 25; argsdata.child = []; argsdata.child.push(node); argsdata = JSON.stringify(argsdata); console.log('argsdata:'+argsdata); $.ajax({ type:"POST", async:true, cache: false, dataType:"json", url:"/klm/saveKLM", data:argsdata, success:function(rdata, textStatus, XMLHttpRequest) { console.log('saveKLM'); console.log('saveKLM:'+rdata); } })
通过json2.js,把js对象转为json对象,通过如上$.ajax传给后台,通过req.body.获得参数。但是后台的JSON.stringify(req.body)中,"都变成了\",获取的参数都是undefined。
首先,我用的express自动生成时已经加了bodyParser.json()。其次,我刚开始传的是js对象,如果没有js对象中没有数组的话,都是正常的;接着手动拼接json字符串,还是\"。而且dataType都是json。在我绝望的时候,看到headers中是form-data,view source中会把我传的数据作为key,加一个""的value。想起了express中只支持json和x-www-form-urlencoded,难道我的content-type是x-www-form-urlencoded。看了一下,果真如此。所以在$.ajax中加contentType: "application/json; charset=utf-8",就可以了。
对于数据,view parsed就是源码中用UrlEncode编码之后的数据,比如将斜杠/变成%2F。
对于header,view parsed就是对于原始的header数据按照协议规范去解析。
另外发现了一个好的调试思路:在nodejs中,没法看到req.body的值(JSON.stringify(req.body)不算),可以用res.send(req.body)传到前台,加个断点,就可以看到传到后台的值是什么样子。
发现自己还是很聪明的,而且还很执着,困难和我,天地间只能有一个。
6_1:碰到一个问题:我删掉表之后,没有调用ajax的success的函数,nodejs提示后台都正常。
解决办法:使用complete,输出textStatus,原来是预定返回json,但是删除之后不需要传json,只需要传字符串说明就好,所以dataType改为text。
7、双击的时候也会触发单击事件
8、keydown事件添加时:最好加载document,如果加在元素上就会有问题。如果元素是通过js添加的,那就没有keydown的事件了。
9、KsmM.findByIdAndUpdate:使用Model
var update_klm = { score : score, comment : req.body.comment, ksmname : req.body.ksmname }; var options_klm = {}; KsmM.findByIdAndUpdate(req.body.ksmid, update_klm, options_klm, function(err){ if(err){ console.log('updateKLM save:'+err); }else{ console.log('find _id'); console.log('score:'+result.score); } })//