1.今天聊聊自定义事件
事件大家都知道,但在很多的框架中都有自定义事件的实现,我写了个简单的,跟大家分享一下,
复制代码 代码如下:
<script>
var cusEvent = function(){
var cache = {};
return {
addEvent:function(type,fn){
cache[type]?cache[type].push(fn):(cache[type]=[fn]);
},
removeEvent:function(type,fn){
if(cache[type]){
if(fn){
for(var i=0,ci;ci=cache[type][i];i++){
ci===fn&&cache[type].splice(i,1);
}
}else{
delete cache[type];
}
}
},
//e可以是个自定义的对象,也可以是字符串
fire:function(e){
if(typeof e =='string'){
e = {type:e}
};
var t = cache[e.type];
if(t){
for(var i=0,ci;ci=t[i];i++){
//e可以有自己的target,没有就用this代替
ci.call(e.target||this,e)
}
}
}
}
}()
//使用
cusEvent.addEvent('start',function(e){alert(e.type)})
cusEvent.addEvent('start',function(e){alert(e.type+"1")})
cusEvent.fire('start')
cusEvent.removeEvent('start')
</script>
2. innerHTML大家都用过,肥肠好使,但在ie下有些时候却不行,比如select如果你想在select上用option就是不行的,因为select的innerHTML是只读的,当然除了这个还有像tr,table等等,我写了个小方法,来兼容innerHTML在ie下对这些元素的使用,希望给大家 点启示
复制代码 代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
Hello World!
<select id="aa"><option>sdfsdf</option><option>sdfsdf</option></select>
<input onclick="html(document.getElementById('aa'),'<option>change1</option><option>change</option>')" type="button" value="use innerHTML"/>
</body>
</html>
<script>
var html = function(){
var div = document.createElement('div');
return document.all?function(pN,h){
div.innerHTML = '<select>'+h+'</select>';
for(var i=0,ci;ci=pN.firstChild;) pN.removeChild(ci)
debugger;
for(;ci=div.firstChild.firstChild;) pN.appendChild(ci);
}:function(pN,h){
pN.innerHTML = h;
}
}()
</script>
原理就是在ie中,我用个临时元素div来跳过innerHTML不能用的问题,可以再写点负载点,就是判断传进来的是tr,table的话用相应的元素套用,
这个方法也可以解决select中option不好添加修改的问题
3.
在js中全局g-add变量是恶魔,是绝对建议不要使用的,但有的时候,可能要写个静态变量,随着函数的执行而累计比如
复制代码 代码如下:
var a = 1;
function fn(){
alert(++a);
}
fn()
fn()
想随着函数的执行而改变
好的写法可以这样
复制代码 代码如下:
<script>
var fn = function(){
var a = 1;
return function(){
alert(++a);
}
}()
fn();
fn();
</script>
a作为闭包,可以被内部的function访问到,但在全局中却没有产生一个全局的a
当然如果你想直接修改a也可以
复制代码 代码如下:
<script>
var fn = function(){
var a = 1;
return function(p){
a = p===undefined?a+1:p;
alert(a);
}
}()
fn();
fn(0);
</script>
4.
传统的方式一般是用el.offsetParent,el.offsetLeft遍历去取得
但其实又跟好的跟容易的方式那就是 getBoundingClientRect
代码如下
复制代码 代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div id="aa" style="position:absolute;width:200px;height:200px;left:200px;top:1000px;border:1px solid #ccc" onclick=offset(this) ></div>
<div id="bb" style="position:absolute;width:200px;height:200px;border:1px solid red"></div>
</body>
</html>
<script>
var offset = function (o){
var d = document,m = Math.max,bl = m(d.body.clientLeft,d.documentElement.clientLeft),st,sl,
bt = m(d.body.clientTop,d.documentElement.clientTop),b,bb = document.getElementById('bb');
return function(o){
b = o.getBoundingClientRect();
st = m(d.body.scrollTop,d.documentElement.scrollTop),sl = m(d.body.scrollLeft,d.documentElement.scrollLeft);
bb.style.cssText +=";top:"+(b.top+st-bt)+'px;left:'+(b.left+sl-bl)+"px";
}
}()
</script>
当你点击最下边的灰色的div时,上边的红色的会跟灰色的完全重叠
5.
ie下的outerHTML大家都用过吧,肥肠好用,在你不仅仅只想返回某个元素下的html,还想返回这个元素的html
但是这个属性只能用在ie下,别的浏览器没有这个属性,怎么办呢,
js小贴士帮你解决这个问题
复制代码 代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<div >
<div id="aa" ksjfkls="sdf" style="">
<p>sdf</p>
<p djkfjd="df"></p>
</div>
<div id="bb" sdfksf=333 >
</div>
</div>
</body>
</html>
<script>
var html = function(){
var d = document,div = d.createElement('div');
return function(id){
var o = d.getElementById(id);
if(o.outerHTML)
return o.outerHTML;
else{
div.innerHTML = ''
var h = '';
div.appendChild(o.cloneNode(true));
return div.innerHTML
}
}
}()
alert(html('aa'))
alert(html('bb'))
</script>
相关推荐:
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO站外优化策略:提升网站排名的关键因素,遵义公司网站推广
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
ChatGPT:智能对话开创新时代,ai做渐变直线
seo相关知识是什么,seo相关技术 ,ai写作讯飞星火认知大模型
为什么行业都要做seo,为什么要做seo ,ai明信片
seo都有什么意思,seo 啥意思 ,ai园林
优化百:开启数字时代的智能营销新时代,湘潭seo优化报价表
什么是seo如何进行seo,何谓seo ,红米的AI摄影什么意思
目前国内最好的AI人工智能软件:未来新篇章
seo稿件是什么意思,seo文章写作要求 ,ai写作未来展望和展望
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
pbootcms自动翻译插件,让你的网站轻松实现多语言覆盖,ai 镀金
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
软件我在AI:改变未来的智能助手
【BVIP尊享体验:超越奢华,开启专属未来】,珠宝网站建设思路
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了
AI一键生成原创文章,让创作更高效更轻松!
ChatGPT不能加载过去的对话,如何提升你的使用体验?,ai智能衣服
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
AI人工智能文章生成平台,释放创作无限可能
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
什么是seo手段,seo的具体手段 ,中国ai 企业
seo适合什么行业,seo适合的行业 ,在ai如何矢量化
文章创作AI:引领智能写作的新时代
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
ChatGPT5.0为什么一直没出来?背后的技术与战略,元宵节ai趣赏月
今时CMS:引领数字化转型的智慧之选,河南seo优化网站联系方式
AI免费写文章:让创作变得轻松高效
“新关键词”开启智慧营销新篇章,助力品牌突围,自己如何做网站seo
优化标题:如何让你的文章更具吸引力与点击力,整站网站优化解决方案
怎么分辨文章是不是AI写的?五大技巧揭开真相
seo监控什么意思,seo数据监控 ,ai panda眼镜架
SEO适合-提升网站排名的关键策略,张家口品牌推广营销中心
目前最火的AI软件有哪些?深度解析必备工具
《收录情况:数字时代的网络信息检索与价值体现》,山东全域营销推广软件客服电话
为什么做seo矩阵项目,为什么做seo矩阵项目不能做 ,怎么用ai写作
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
摘要AI生成:高效工作的新时代利器
好用的AI写作软件,让创作更高效
用AI写文章,释放你的创作潜力!
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
SEO公司核心业务是什么?揭秘提升网站排名的奥秘,写作助手ai一键生成作文在线
SEO大量优化:如何通过精准策略提升网站流量,突破搜索引擎排名瓶颈,吕梁本地网站推广平台
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK