Ajax 板


LINE

※ 引述《TonyQ (沉默是金。)》之铭言: : ※ 引述《No (you stay there)》之铭言: : : 以s25大原有的架构 : : 改写成我的作法 : : 手边没IE6测 : : Firefox、Chrome5、IE8都可以run : : 另外有加上一些叠字和嵌入一个youtube影片来测试诉求 : : 编辑: http://jsfiddle.net/D349J/1/ : : 结果: http://fiddle.jshell.net/D349J/1/show/light/ : 用自己习惯的方式整理程式码,顺便详阅一下做了什麽事情 XD : ## FIX for ie only script. : http://jsfiddle.net/RNwh8/6/ : 大概整理的方向如下: : 1.固定且重复的字串改用全域变数写,方便改动。 : 2.一些跟主轴比较无关的逻辑实作其实可以拆出来(像getElementsByClassName) : 有些函式或参数加上底线是为了不要跟default的函式冲到 XD : 3.拆出来也比较方便针对不同 browser 去实做不同的逻辑。 : 4.有扯到regex的尽量放个sample方便了解regex行为 : 5.把复杂的呼叫行为 ex . a.xxx().yyy().ccc(fn()) 尽可能的分开, : 除非那些行为本来就是用来设计做 chain method的... : --- : 不过凭良心讲,这个功能我还是比较宁愿用 jquery highlight plug-in 写 XD : http://bartaz.github.com/sandbox.js/jquery.highlight.html 事情是这样的~ 前几天在冥想(发呆)时 突然想到了一串regex /(c+)|([^c]+)/g 简单的说就是 abcabababcccabacccababcccccccaccc 将会被切成 ab,c,ababab,ccc,aba,ccc,abab,ccccccc,a,ccc 真是好方便阿~ 所以便着手重写了一次search() http://jsfiddle.net/EgEcK/3/ //code base on TonyQ function search(target,search_str) { var _tag=null,tag=target.firstChild; var regex_search= new RegExp("("+search_str+"+)|([^"+search_str+"]+)","g"); do { if(tag.hasChildNodes()){ search(tag,search_str); } //用regexp是为了可找出叠字或字串连续叠字 if(tag.nodeName=='#text' && tag.nodeValue.match(search_str)) { var matches=tag.nodeValue.match(regex_search); for(var i=0;i<matches.length;i++) { tag.parentNode.insertBefore( matches[i].match(search_str) ? createReplacedTxtNode(matches[i]) : prependWordTxt(matches[i]), tag); } _tag=tag.previousSibling; deleteTag(tag); tag=_tag; } tag=tag.nextSibling; } while(tag); } //其他有更改的函数 function prependWordTxt(prependWord){ var newTxtNode=document.createTextNode(prependWord); return newTxtNode; //其实传空字串进去也没关系阿~ } if(!document.getElementsByClassName) { document.getElementsByClassName=function(classN) { var a=[]; var query_results = document.getElementsByTagName('*'); for(var i=0;i<query_results.length;i++) { if(query_results[i].className==classN) a.push(query_results[i]); } return a; }; } //是的 正是我前几天写的那个getElementsByClassName function goSearch(target,search_str) { reverse_str(); if(search_str!="" && typeof search_str=="string" && target.nodeType==1) search(target,search_str); } //多了几个检查 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.172.100.35 ※ 编辑: s25g5d4 来自: 218.172.100.35 (07/14 16:54)
1F:推 No:这是用来做单字元搜寻的做法吗 07/14 22:43
2F:→ s25g5d4:呜呜 今天才被东尼大用水球点醒 07/14 23:12
3F:→ s25g5d4:这个regex有很大的问题阿 07/14 23:13
4F:→ s25g5d4:请看http://jsfiddle.net/EgEcK/4/ 07/14 23:13
5F:→ s25g5d4:一直改不好就放弃了= = 07/14 23:13
6F:推 No:我还以为你是要做单字元的部份@@ 07/14 23:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP