使用jQuery处理itemprop属性的span文本时substring函数报错求助
解决jQuery通过itemprop定位span并截取文本的问题
嘿,我明白你的问题了——你想把那个带itemprop="dateVehicleFirstRegistered"的span里的日期(比如03-1973)只显示年份部分,但之前的代码报错了对吧?
先说说你之前代码的问题:你直接在jQuery选择器返回的对象上调用substring(),但substring()是字符串的方法,而jQuery选择器返回的是DOM元素的集合(jQuery对象),不是字符串,所以才会抛出TypeError。
给你两个可行的解决方案:
方案一:遍历元素处理文本
用.each()遍历所有符合条件的span,先取出文本内容处理,再把处理后的内容放回去:
<script type="text/javascript"> jQuery(document).ready(function(){ // 遍历每个目标span元素 jQuery('span[itemprop="dateVehicleFirstRegistered"]').each(function() { // 获取当前元素的原始文本 const originalText = jQuery(this).text(); // 截取从第3位开始的字符(跳过前3个的"MM-"部分) const yearOnly = originalText.substring(3); // 更新元素的文本内容 jQuery(this).text(yearOnly); }); }); </script>
方案二:用.text()的回调函数(更简洁)
jQuery的.text()方法支持传入一个回调函数,它会自动遍历元素,把原文本传给你,你返回处理后的文本就行:
<script type="text/javascript"> jQuery(document).ready(function(){ jQuery('span[itemprop="dateVehicleFirstRegistered"]').text(function(_, originalText) { // 直接返回截取后的年份 return originalText.substring(3); }); }); </script>
这里第一个参数是元素的索引,我们用下划线忽略掉就行,重点是第二个参数的原始文本。
这样不管用户输入的日期是05-2020还是12-1999,都能准确提取出后面的年份部分啦。
内容的提问来源于stack exchange,提问作者EV882
相关产品推荐
相关产品推荐

