获取元素的文本
记得John Resig说过,类库就是用来屏蔽浏览器的差异,但他的getText函数就明显做不到这一点,怎么没人去提醒他一下呢?我的英文特烂,阅读还可以,但要我正经八儿地写几句英文,估计句句都是病句……不说了,看下面测试(如果在IE下报错,请刷新当前页面):
IE下明显少了空行与空白,因为IE会自动删除空白节点。所以,要让所有浏览器保持一下,就只有去掉空白节点了。还有,我不明白jQuery会把所有匹配元素的文本串成一个,为何不返回一个字符串数组呢,省得到时我们还要一个个分解……
下面是我的方案:
//@author:司徒正美(zhongqincheng) //获取某个节点的文本,如果此节点为元素节点,则取其childNodes的所有文本, //为了让结果在所有浏览器下一致,忽略所有空白节点,因此它非元素的innerText或textContent var getText = function (nodes){ var result = "" ,node; for ( var i=0,n=nodes.length;i<n;i++){ node = nodes[i]; //如果是文本节点或者CDATA节点 if ( node.nodeType === 3 || node.nodeType === 4 ) { if (!/^\s+$/.test(node.nodeValue)) //忽略空白节点与换行符 result += node.nodeValue; //如果是元素节点 } else if ( node.nodeType === 1 ) { result += getText( node.childNodes ); } } return result; } |
看一下效果:
如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码


机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义