【问题标题】:How to get all spans in string variable, with particular class name如何获取具有特定类名的字符串变量中的所有跨度
【发布时间】:2012-02-23 05:49:09
【问题描述】:

因为我很难列出所有跨度,有 class="ansspans",可能是一个或多个跨度,其中有“ansspans”类,我需要全部跨度及其内容并遍历它。你能告诉我怎么做吗,Regex,Jquery,任何事情都可以,

  1. 内容将在 字符串变量 中(不在 DOM 中),因为 IE 9 忽略了属性中的引号,所以我不能使用 getelementbyclass 名称,我按照这个答案来获取引号 InnerHTml workAround ,现在用引号显示。所以我需要在一个数组中获取所有的ansspan类,以便我对其进行迭代n获取每个跨度的文本内容

    <span id="sss_ctl00_ctl06_lblanswertext">
        assignment 
        <span class="ansspans">submission </span>
        date : &nbsp;10:07:51 AM
    </span>
    

在这个例子中,预期的输出将是 1 个跨度对象,所以我可以迭代它

更新:我不能使用 DOm,因为我们处于 quirks 模式,所以 ie 9 将忽略属性引号,我无法使用 getelement 按类名遍历。所以,我需要匹配字符串变量中的所有跨度。希望大家理解我的问题;(

【问题讨论】:

  • @SergioTulentsev 不,我没有为此尝试过,如果您提供一些答案会有所帮助
  • 为什么你的html是一个字符串?你为什么要为此使用.innerHTML?你是说你想遍历自己有一个子跨度的任何跨度,而孩子有一个类“ansspans”?如果这些跨度存在在您的页面上,则无需将 html 作为字符串来查找具有特定类的跨度。
  • 我需要用于选定范围的 innerHtml,n 选定的文本被标记为 ansspans,即 9 它忽略了 attrivbutes 中的引号,所以我使用了上述链接,因为它会返回带引号的属性。所以现在我需要在字符串变量中找到所有具有 ansspa 的匹配项
  • 我很确定,如果您展示如何创建该字符串的代码,我们可以展示一种不使用.innerHTML 或字符串的更好方法。您还可以澄清一下所需的输出是什么吗?您说 “预期输出将是 1 个跨度对象,以便我可以对其进行迭代” - 如果您在谈论迭代,您可能想要一个数组,但数组的元素是否应该引用匹配 span 的实际 DOM 元素,还是什么?
  • @nnnnnn 当我标记文本时,我将在所选文本之间插入跨度类,类名为“ansspans”,在 Ie9 中,它忽略引号,stackoverflow.com/questions/9394318/…,检查这个,这个我昨天问,现在当我在字符串中引用文本时,我可以找到所有与 ansspans 匹配的内容吗?我需要获取每个 ansspans 类的内容

标签: javascript jquery regex


【解决方案1】:

(如本站之前所说,有时可以用正则表达式解析 limitedknown 组 xml)

   //assumes no <span id="stupid>" class="ansspans">, and no embedded span.ansspans
        var data = ' <span id="sss_ctl00_ctl06_lblanswertext"> assignment    \n date : &nbsp;10:07:51 AM    \n     <span class="ansspans">ONE has a new \n line in it</span><span class="ansspans">TWO</span><span class="ansspans">3 </span><span class="ansspans">4 </span><span class="ansspans">5 </span>';
        var myregexp = /<span[^>]+?class="ansspans".*?>([\s\S]*?)<\/span>/g;
        var match = myregexp.exec(data);
        var result = "spans found:\n";
        while (match != null) {
            result +=  "match:"+RegExp.$1 + ',\n';
            match = myregexp.exec(data);
        }
        alert(result);

(编辑以捕获内部 html 而不是整个标签)

【讨论】:

  • 没关系,但我只能获得 ansSpan 类的内容。只有文本,没有跨度标记? 5 ,那么我只需要得到“5”吗?
【解决方案2】:

以下 jQuery 选择器 $('span.ansspans') 将获得 all 页面的 &lt;span class="anspans"&gt;

If you need something for a specific element, add a prefix of the appropriate selector, i.e. $('#sss_ctl00_ctl06_lblanswertext span.ansspans')

如果这需要以更动态的方式完成,请查看 find()filter()etc 等函数。

【讨论】:

  • 它对字符串变量有效吗?你能在 JsFiddle 中展示演示吗
  • 因为 iE 9 会删除引号,所以我需要从字符串变量中获取它。整个文本被分配给一个字符串变量,使用这个变量我需要得到所有的类。可以使用 jquery 吗?
  • 我的情况不同,我只能在字符串变量中使用,你可以将span文本分配给字符串,n会匹配吗?
  • @SergioTulentsev 你能举个例子来匹配字符串中的所有ansSpan
  • @SergioTulentsev 它有效,但我处于怪癖模式:( :( :( stackoverflow.com/questions/9394318/… 我昨天问了这个问题
【解决方案3】:

使用 jquery 的解决方案

var tempArray = $("span.ansspans");//this will select all the span elements having class 'ansspans' and return them in an array
var len = tempArray.length;//calculate the length of the array
for(var index = 0;index<len;index++){
    var reqString = $(tempArray[index]).html();
}

这些字符串值可以放在一个数组中,也可以只在此时使用。

如果您想要 textContent,请使用 .text() 而不是 .html()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多