大K自己封裝的AJAX
全能的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);
}
});
一个简单的实现隔行换色的东西
隔行换色,好常见的东西- -!
老早前写的,前段时间群里(24810664[jQuery Learning]<-这个真的是广告)的Erico.Len在问,就按他的需求改了改,然后,解决了他的问题,我正好也有东西更新一下blog,要不太久没更新,实在太对不起辛苦爬我页面的蜘蛛了...
嗯,总的来说,这个东西写得很烂,毕竟偶不是搞技术的嘛,哈...
提示:你可以先修改部分代码再运行。
js四舍五入(round()方法)并保留小数点后N位的函数
今天容容问了我个四舍五入的问题,本来想自己写个,后来在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?让我们来了解事实看清本质!
今天在做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的搜索框做了一个
模仿Kontain.com的搜索框做了一个,主要考虑到裸奔的时候还可以用,其他方面没太多考虑,IE6、IE7、FF3下没问题,有空修正一下opera下的问题吧。
原文发在蓝色,貌似我是帖子终结者,发的帖都没几个人关注,-_-|||
提示:你可以先修改部分代码再运行。
tipsAlert-一个简单的提示效果
在上家公司任职的时候做的东西,因为后台有很多ajax的交互,所以需要经常给出提示,就做了这么个组件。另外,顺便测试一下代码高亮^_^
(continue reading…)