welefen的随笔

月度存档: 十二月 2009

select节点clone全解析

IN:前端开发   标签: , ,    评论: 0

在开发ns-log项目中,统计分类有复制的功能。由于之前的统计分类中的数据是通过JS赋值进去的,之后用户可能又进行了修改,发现进行节点克隆时,出现了 无法复制select下拉框值的怪异现象。本文对这个怪异现象进行解析和给出解决办法。

问题现状

使用节点的cloneNode(true/false)进行克隆时,目前是下面的表现情况:

  1. select为设置初始值或者初始值是第一个option。
    表现:各大浏览器都没什么问题。
  2. select初始值不是在第一个option。
    表现:IE下无法克隆,其他内核的浏览器没什么问题。
  3. select的值被用户或者JS修改。
    表现:各个浏览器均无法克隆到真确的值。值结果跟第二条结果相同。

继续阅读 »

12-18
2009

javascript中toInt的几种方法

IN:前端开发   标签: ,    评论: 0

在javascript中,如果要将一个字符串转变成数字,一般是通过parseInt这个函数进行。但如果对输入串有很高确定性的话,其实可以用更简单的方法。如:只是将字符串“123”变成数字123。下面给出具体的说明。

parseInt函数

parseInt函数是专门用来处理将字符串变成整型的。具体请见:ECMA-262 P114。

  1. 支持八进制和十六进制,如:’0111′,’0×111′。
  2. 支持非正数。如:’-111′。
  3. 支持数字后还有字符串,如:’111abc’。
  4. 支持第二个参数,是传递的转换进制,数值为2到36。如:parseInt(’111′,2),即将111转换为二进制。
  5. 忽略前面的空白字符,如:\n,\t,\r。
  6. 如果无法将字符串转换为一个数值,则返回NaN。

继续阅读 »

12-16
2009

规范一下自己的生活

IN:我的生活   标签: ,    评论: 1

来北京已经有一个多星期了,之前住在同学那,生活时间跟同学走。现在自己搬了地方,是要规范一下自己的生活了,虽然年轻但还是要珍惜身体,关注健康。

作息时间

  1. 上班时间早上8点到8点20起床,喝杯蜂蜜水,准备上班。
  2. 早餐在公司吃。
  3. 在公司喝枸杞菊花决明子茶。
  4. 中餐后去健身房稍微锻炼下,主要是炼下臂力和骑下自行车(轻微运动)。
  5. 在公司餐厅饮食还可以的话,中餐和晚餐也在餐厅解决,尽量吃清淡的食物。
  6. 无特殊情况,晚上8点到9点之间回家。
  7. 回家后稍微上会网,喝杯蜂蜜水,洗澡上床睡觉(在11点之前)。

继续阅读 »

12-11
2009

javascript数组唯一化实现方式

IN:前端开发   标签: , , , ,    评论: 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;
}

继续阅读 »

12-07
2009
loading...