大K自己封裝的AJAX

2 Comments Posted by jeffery on 2010-06-29, under javascript

全能的K神啊,請賜予我力量吧~

大K自己封裝的AJAX,僅以此帖作為收藏,以表達我對大k那有如濤濤江水,連綿不絕的景仰之情!

(function () {
            var kinogam;
            if (!window.kinogam)
                kinogam = window.kinogam = new Object();
            else
                kinogam = window.kinogam;

            kinogam.ajax = function (s) {
                var x = new kinogam.ajaxHandler();
                x.setMember(s);

                x.xmlHttp.onreadystatechange = function () {
                    if (x.xmlHttp.readyState == 4 && ((x.xmlHttp.status >= 200 && x.xmlHttp.status < 300) ||
                     x.xmlHttp.status == 304 || x.xmlHttp.status == 1223)) {
                        if (x.success != null)
                            x.success.call(x,x.xmlHttp.responseText);
                    }
                    else if (x.xmlHttp.readyState == 4) {
                        if (x.error != null)
                            x.error.call(x,x.xmlHttp.responseText);
                    }
                }
                x.xmlHttp.open(x.type, x.url, x.async);
                try {
                    x.xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    x.xmlHttp.send(kinogam.ajax.json2url(x.data));
                }
                catch (e) {
                }
            }

            kinogam.ajaxHandler = function () {
                this.url = "";
                this.type = "POST";
                this.data = null;
                this.async = true;
                this.success = null;
                this.error = null;
                this.xmlHttp = kinogam.ajax.getXmlHttpRequest();
            }
            kinogam.ajaxHandler.prototype.setMember = function (s) {
                if (s != null) {
                    for (var i in s) {
                        this[i] = s[i];
                    }
                }
            }
            kinogam.ajax.getXmlHttpRequest = function () {
                return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

            }
            kinogam.ajax.json2url = function (json) {
                var url = "";
                for (var i in json) {
                    url += "&" + encodeURIComponent(i) + "=" + encodeURIComponent(json[i]);
                }
                return url.replace(/^&/, "");
            }
        })();

        kinogam.ajax({
            url: "handler.ashx",
            data: { b: "kkkyyy" },
            success: function (html) {
                alert(html);
            }

        });

多级菜单的簡單實現

Leave a Comment Posted by jeffery on 2010-06-03, under javascript

最近群裡老有人在問多級菜單的問題,中午閒著沒事,就寫了個。嗯,懶得打字,直接看DEMO算了…
感謝鈴妹幫我看bug…

提示:你可以先修改部分代码再运行。

一个简单的实现隔行换色的东西

Leave a Comment Posted by jeffery on 2010-03-26, under javascript

隔行换色,好常见的东西- -!
老早前写的,前段时间群里(24810664[jQuery Learning]<-这个真的是广告)的Erico.Len在问,就按他的需求改了改,然后,解决了他的问题,我正好也有东西更新一下blog,要不太久没更新,实在太对不起辛苦爬我页面的蜘蛛了...

嗯,总的来说,这个东西写得很烂,毕竟偶不是搞技术的嘛,哈...

提示:你可以先修改部分代码再运行。

js四舍五入(round()方法)并保留小数点后N位的函数

Leave a Comment Posted by jeffery on 2009-10-26, under javascript

今天容容问了我个四舍五入的问题,本来想自己写个,后来在google上搜了一下,发现个写法巨强的四舍五入的转换函数,如下:

function   round(v,e){
    var   t=1;
    for(;e>0;t*=10,e--);
    for(;e<0;t/=10,e++);
    return   Math.round(v*t)/t;
}

在感叹JS强大的同时,也感叹一下自己的无知!
参数里的:
v表示要转换的值
e表示要保留的位数

函数里的两个for,这个是重点了,
第一个for针对小数点右边的情况,也就是保留小数点右边多少位;第二个for针对小数点左边的情况,也就是保留小数点左边多少位。
for的作用,就是计算t的值,也就是v应该放大或者缩小多少倍的倍数(倍数=t)。
for这里利用到了for里的两个特性,条件判断和计数器累计(循环),当e满足条件时for继续,并且e每次累加(e的每次累加,就是给for制造不满足循环的条件)的同时,也计算t的值。
最后利用了原生的round方法来计算被放大/缩小后的v的结果,然后把结果放大/缩小到正确的倍数

push or concat is not a function?让我们来了解事实看清本质!

2 Comments Posted by jeffery on 2009-09-11, under javascript

今天在做IE6/7:focus伪类fix的时候,遇到个问题,就是通过document.getElementsByTagName(‘input’)和document.getElementsByTagName(‘textarea’)得到的数组不能使用concat()方法来联合!这是怎么回事?来看看官方一点的解释:

getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

看到了吧,是对象的集合!这里面有个很微妙的联系,数组(Array())是一种特殊的对象(Object()),而且我们平时都把这种方法得到的集合当成数组用惯了,思维一时转不过来,实际上,我们常用到的是length属性,这一点比较容易误导人。关于length,不只是数组有,字符串也有,不要想当然有length就是数组了。

额,难道你还不相信document.getElementsByTagName得到的不是数组?好吧,来看一下例子

提示:你可以先修改部分代码再运行。

第一个弹出的结果
IE6 : undefined
FF3 : function Object() {
    [native code]
}

第二个弹出的结果
IE6 : function Object() {
    [native code]
}
FF3 : 与IE6一致

第三个弹出的结果
IE6 : function Array() {
    [native code]
}
FF3 : 与IE6结果一致

 

这次看明白了吧,所以得到的结果集不是数组,而是一个所谓的对象集合。

所以我要使用其他办法来使两个结果集联合起来,下面是我的解决办法

提示:你可以先修改部分代码再运行。

模仿Kontain.com的搜索框做了一个

Leave a Comment Posted by jeffery on 2009-04-27, under javascript

模仿Kontain.com的搜索框做了一个,主要考虑到裸奔的时候还可以用,其他方面没太多考虑,IE6、IE7、FF3下没问题,有空修正一下opera下的问题吧。
原文发在蓝色,貌似我是帖子终结者,发的帖都没几个人关注,-_-|||

提示:你可以先修改部分代码再运行。

tipsAlert-一个简单的提示效果

2 Comments Posted by jeffery on 2009-04-26, under javascript

在上家公司任职的时候做的东西,因为后台有很多ajax的交互,所以需要经常给出提示,就做了这么个组件。另外,顺便测试一下代码高亮^_^
(continue reading…)