学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/13/2218275.html
意外收获惊喜:
<input type = "text" oncopy = "alert('copy');" onpaste = "alert('onpaste');" oncut = "alert('cut');"/>
把内容粘贴到文本框时触发 onpaste 事件,在文本框中复制时触发 oncopy 事件,剪切时触发 oncut 事件。惊喜之处是后两个是自己从第一个事件(onpaste)的使用示例中类推联想出来并测试确认的!
关于:
控制剪贴板的 clipboardData 是 window 底下的属性,其下有 getData("Text")、setData("Text","要放到剪贴板上的文本内容")、clearData("Text")三个常用方法。
细节:
alert("abc".charAt(0));打印的结果是“a”;而 alert("abc".charCodeAt(0)); 打印的结果是“97”,即字符“a”的 ASCII 码值。
再如:代码“var code = contents.charCodeAt(i);”中 code 接收到的是字符串 contents 里的第 i 个字符的 ASCII 码值。
教训:
1 function RemoveCitySelections() {
2 var city = document.getElementById("city"); //提取出id为“city”的select标签。
3 var length = city.childNodes.length; //这里必须提前把这子节点长度赋值给一个变量,再在 for 头上用该 length 变量来判断,否则要是直接把city.childNodes.length 写在 for 头的判断语句中的话,由于每循环一次 city.childNodes.length 都会发生变化一次(总数减少一个),导致循环的上限次数值也跟着减少,从而会出现“还没删除完节点就结束循环”的意外效果。
4 for (var j = 0; j < length; j++) {
5 city.removeChild(city.lastChild);
6 }
7 }
技巧:
selectCity.options.length = 0;执行这句代码以后代表城市选择框的 select 标签 selectCity 下的所有 options 标签将被全部清除。
细节:
1 function SelectInverse() {
2 var inputs = document.getElementsByTagName("input");
3 for (var i = 0; i < inputs.length; i++) {
4 var input = inputs[i];
5 if (input.type != "checkbox") {
6 return;
7 }
8 if (input.checked != true) { //这里不能用“input.checked != "checked"”来判断,因为当 checkbox 被选中时,checkbox 的 checked 属性值不是为“checked”,而是为“true”,同理,当不是被选中时,“checked”属性的值为“false”,而不是“""”。
9 input.checked = "checked";
10 }
11 else {
12 input.checked = "";
13 }
14 }
15 }
调试技巧:
若想看某个变量或属性运行时的实时值,可以在运行时右键调出"快速监视"或"添加监视"模块,把该变量名或属性名添加到监视模块中来进行实时监视。