月度存档: 十二月 2009
IN:前端开发 标签: clone, cloneNode, select 评论: 0在开发ns-log项目中,统计分类有复制的功能。由于之前的统计分类中的数据是通过JS赋值进去的,之后用户可能又进行了修改,发现进行节点克隆时,出现了 无法复制select下拉框值的怪异现象。本文对这个怪异现象进行解析和给出解决办法。
问题现状
使用节点的cloneNode(true/false)进行克隆时,目前是下面的表现情况:
- select为设置初始值或者初始值是第一个option。
表现:各大浏览器都没什么问题。
- select初始值不是在第一个option。
表现:IE下无法克隆,其他内核的浏览器没什么问题。
- select的值被用户或者JS修改。
表现:各个浏览器均无法克隆到真确的值。值结果跟第二条结果相同。
继续阅读 »
IN:前端开发 标签: javascript, tonumber 评论: 0在javascript中,如果要将一个字符串转变成数字,一般是通过parseInt这个函数进行。但如果对输入串有很高确定性的话,其实可以用更简单的方法。如:只是将字符串“123”变成数字123。下面给出具体的说明。
parseInt函数
parseInt函数是专门用来处理将字符串变成整型的。具体请见:ECMA-262 P114。
- 支持八进制和十六进制,如:’0111′,’0×111′。
- 支持非正数。如:’-111′。
- 支持数字后还有字符串,如:’111abc’。
- 支持第二个参数,是传递的转换进制,数值为2到36。如:parseInt(’111′,2),即将111转换为二进制。
- 忽略前面的空白字符,如:\n,\t,\r。
- 如果无法将字符串转换为一个数值,则返回NaN。
继续阅读 »
IN:我的生活 标签: 健康, 生活 评论: 1来北京已经有一个多星期了,之前住在同学那,生活时间跟同学走。现在自己搬了地方,是要规范一下自己的生活了,虽然年轻但还是要珍惜身体,关注健康。
作息时间
- 上班时间早上8点到8点20起床,喝杯蜂蜜水,准备上班。
- 早餐在公司吃。
- 在公司喝枸杞菊花决明子茶。
- 中餐后去健身房稍微锻炼下,主要是炼下臂力和骑下自行车(轻微运动)。
- 在公司餐厅饮食还可以的话,中餐和晚餐也在餐厅解决,尽量吃清淡的食物。
- 无特殊情况,晚上8点到9点之间回家。
- 回家后稍微上会网,喝杯蜂蜜水,洗澡上床睡觉(在11点之前)。
继续阅读 »
IN:前端开发 标签: array, js, unique, 唯一化, 数组 评论: 4到目前为止,javascript中array还没有内置的unique方法,本来这篇文章很早就写了,但由于之前的虚拟主机忘记续费导致数据丢了,前几天JerryQu问了我这个问题,觉得可能还有其他人要,这里在写出来,备大家参考。
实现方式
这里给出2中实现方式。一种是大家应该都知道的indexOf检测的方式,另一种是结合lastIndexOf和splice实现方式。
//首先给Array对象原型上添加indexOf和lastIndexOf方法.(如果没有的话)
if(!Array.prototype.indexOf){
Array.prototype.indexOf = function(element, index){
var length = this.length;
if(index == null){
index = 0;
}else{
index = +index || 0;
if(index < 0) index+= length;
if(index < 0) index = 0;
}
for(var current;index
current = this[index];
if(current === element) return index;
}
return -1;
}
}
if(!Array.prototype.lastIndexOf){
Array.prototype.lastIndexOf = function(element, index){
var length = this.length;
if(index == null){
index = length - 1;
}else{
index = +index || 0;
if(index < 0) index+= length;
if(index < 0) index = -1;
else if(index >= length) index = length – 1;
}
for(var current;index>=0;index–){
current = this[index];
if(current === element) return index;
}
return -1;
}
}
//很常见的实现方式
var arrayUnique1 = function(arr){
for(var i=0,len=arr.length,result=[],item;i
item = arr[i];
if(result.indexOf(item) < 0) {
result[result.length] = item;
}
}
return result;
}
//通过lastIndexOf和splice方法实现方式
var arrayUnique2 = function(arr){
var length = arr.length;
while(--length){
//如果在前面已经出现,则将该位置的元素删除
if(arr.lastIndexOf(arr[length],length-1) > -1) {
arr.splice(length,1);
}
}
return arr;
}
继续阅读 »