* You are viewing the author archive

程序员喝饮料

苦逼的程序员宅男,七夕没妹纸陪,算算一个奥数问题。
1元钱可以买一瓶汽水、2个空瓶子换1瓶汽水,
不能借空瓶。20快钱能买几瓶?
方法一:

20块买20瓶,20瓶换10瓶,10瓶换5瓶,拿5瓶中的4瓶换2瓶,2瓶换1瓶,1瓶和之前剩下的1瓶换1瓶,最后剩下一个空瓶

20+10+5+2+1+1 =39瓶。

方法二:

用递归的方法,一瓶一瓶买,有2空瓶了就去换,直到把钱用完。

(物价通胀厉害,RMB这么买东西就爽了)

function dealDrink(money,eBottles){
  var rBottles = 0;//喝掉的瓶数
  eBottles = eBottles || 0;//空瓶数
  if(money > 0){
    money -= 1;
    rBottles += 1;
    eBottles += 1;
    if(eBottles == 2){//两瓶换1瓶
      rBottles += 1;
      eBottles = 1;
    }
    if(money > 0){
      return rBottles + dealDrink(money,eBottles);
    }
  }
  return rBottles;
}

alert(dealDrink(20,0));

结果也是39瓶,剩下1个空瓶。有点失望啊,结果是一样的。
不信?去alert看看,我反正信了。。

javascript 数组冒泡排序

javascript 数组可以用sort排序。以前学VB的时候,用过冒泡排序,试着用JavaScript来完成。

用到嵌套循环,比较大小,创建temp变量保持暂定值,冒泡排序

var a = [0,6,3,2,11,99,55];
for(var i=0;i<a.length-1;i++){
    for(var j=i+1;j<a.length;j++){
        if(a[i] > a[j]){
            var temp = a[i];
            a[i] = a[j];
            a[j] = temp
        }
     }
}
alert(a);

greasemonkey for tianya

天涯看帖,只看楼主现在要3000积分了,本人穷人,想到试试用greasemonkey这个强大的Firefox插件(greasemonkey参考),写个用户来取代天涯自带的只看楼主的功能,从网上搜寻了下资料,

查看了下其页面:

JS变量 intAuthorId 表示文章作者的ID,而作者的每一篇帖子中都有<span value=”****”></span>,其中value值就是intAuthorId值。

因此进行判断,如果span的value != intAuthorId ,那么删除此回复。具体如下: Continue Reading

仿iphone4 ipod touch4 Retina

最近买了个ipod touch4,苹果的Retina 分辨率960* 640 在3.5寸的屏幕上显示确实了得。恰好室友小松告知,有国外博客上看到个仿Retina的演示作品,

自己就试着做了下,demo


function changePicPos(posX,posY){
 posX = posX - offLeft - 126;
 posY = posY - offTop - 59;
 circle.style.backgroundPosition = (-posX * 1.64 ) +"px"+" "+ (-posY * 1.37) + "px";
};

上面代码是关键点,1.64和1.37这个放大的比例是这样得出的(以下单位都是像素): Continue Reading

遍历DOM所有父类节点

用到函数递归,递归总感觉理解起来不太容易


function parentAll(elem){ //传入参数 ,DOM元素
var arr = [];//先定义一个空数组
return (function _parentAll(elem){//返回一个私有函数的执行结果
if(elem.parentNode){//若存在父节点,把父节点追加到数组中
arr.push(elem.parentNode);
}

if(elem.parentNode.parentNode){
//若存在父节点的父节点,再运行这私有函数即递归
_parentAll(elem.parentNode)
}
return arr;
})(elem);
}

蹩脚的俄罗斯方块

好久没有写文章了,之前在忙准备实习的事,实习的时候也忙,就没上博客。面向对象没学好,这jquery写的俄罗斯方块,也只写了80%,不想写了,demo,思路是像电视机显像管一样,图象在什么位置,哪些DIV就变色。

总结下遇到的问题。

1、判断图象是否超出容器内部。

2、图象自动下落与按键使其下落的问题。

3、图象变形的瞬间与其他图象碰撞的问题。

4、消条的时候,我选择的是从集合底部遍历(jQuery.each),依次消色并下落图象。

jquery each从尾部遍历

jquery each默认是从头部遍历jquery对象的,如果在回调函数里面,把$(this)的某个属性赋值到它之后的jquery对象里,那就会出现不期待的结果,所以最好each能从尾部遍历,但是jquery没有提供这个功能。

只能在设置个数组(arr)变量保存遍历结果,然后arr.reverse()颠倒元素顺序,最后再一次each遍历arr即可。

var arr = [];
$("div").each(function(i){
arr.push($(this))});
arr.reverse();
$.each(arr,function(i,n){
$(this).next().css("background-color",$(this).css("background-color"));
});
Page 1 of 512345