【问题标题】:remove "bullet" symbol from html从 html 中删除“子弹”符号
【发布时间】:2012-06-18 20:14:15
【问题描述】:

我有一个脚本,可以从表格中读取地址列表并在谷歌地图上追踪路线。

(和我以前的类似:how to use the google maps api with greasemonkey to read a table of addresses and trace the route?

但是每个地址前面都有一个“子弹”符号,谷歌地图不会删除它来渲染地图,给我下面的错误

这是表格单元格的 HTML

关于如何使用 JQuery/Javascript 删除“子弹”的任何提示?

【问题讨论】:

  • 最有效的方法是更改​​读取数据的代码。你能给我们一个样本吗?否则,后期使用 JS 修复可能会有问题。
  • 你试过替换方法吗? w3schools.com/jsref/jsref_replace.asp
  • 如果它总是在那里,把它砍掉? "• bleep bloop".substr(2)
  • 我不确定它是否会一直存在。没有ASCII码之类的吗?
  • 粘贴带有“项目符号”的实际源 HTML——或者更好的是,链接到整个页面。制作“子弹”的方法不止一种。

标签: javascript jquery greasemonkey userscripts


【解决方案1】:

如果您不想.substr(2),您可以将第一次出现替换为:

var s = $("#para").text().replace("\u2022", "");

其中\u2022 是html 项目符号实体• 的字符

【讨论】:

  • 这可能有效,但这不是一种通用方法,因为替换适用于所有字符串(好吧,我知道字符串内部不太可能有项目符号,但这个问题应该以一般方式解决)。
  • 它仅适用于第 1 次出现,后续的将被忽略,如果 char 不存在,它不会任意切断前 2 个字符。如果您想将其锚定到开头,您可以使用/^\u2022\s/
  • @Cranio 可能。如果我错了,请随时纠正我(我对正则表达式不太好),但我不能只添加/g 来进行全局替换吗?
  • 不,因为“global”部分仍然指的是单个字符串(“global”的意思是“替换字符串中所有出现的”)。换句话说,正则表达式不知道“对象/元素集合”。
  • @Cranio 的“全局”是指在字符串中(var s int 这个例子)。就像开头一颗子弹,结尾一颗子弹。
【解决方案2】:
$(".dadosf:contains('.')").each(

 function()
 {
     $(this).text($(this).text().substring(2));
 }

);

【讨论】:

  • 如果项目符号在字符串内部,则选择器不正确。
  • 这不是重点。解决方案应该是可重用的,并考虑到异常和怪癖:如果 OP 无法控制的谷歌地图在字符串内返回一个项目符号怎么办?虽然它可能适用于 这种 情况,但您无法从快照中得出一般性结论。
【解决方案3】:
$(".dadosf").each(   
 function(i,e)
 {
     $(e).text($(e).text().substring(2));
 }
);

​ JQuery 的.each() 遍历集合,我们只需将内部文本替换为取自第二个字符的相同文本(substring(2)


正如另一位用户指出的那样,这种方法在您确定有子弹的情况下有效。如果不是,我会在代码中使用条件而不是 :contains(text) 选择器,以采用通用方法并确保我们只删除开头的字符(文本内不太可能有项目符号,但 :contains() 会也匹配具有此条件的字符串,这是错误的):
$(".dadosf").each(   
 function(i,e)
 {
     var t = $(e).text();
     if (t.substring(0,1) == "\u2022")
         $(e).text(t.substring(2));
 }
);

【讨论】:

  • 不是我。我永远不会对试图提供帮助的人投反对票。
猜你喜欢
  • 2014-02-27
  • 2019-02-28
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2017-05-27
  • 2016-11-22
相关资源
最近更新 更多