2017-09-08 17 views
-4

我实际上想要提取jquery中选定的数量,但由于每个产品的CSS类中的一个字符串(在图像中以黄色突出显示)发生了变化,因此挣扎。因此,对于一些游客到这个页面谁拥有iphone 7中选择类名称可能是如何从此CSS中提取值

按钮按钮 - 选择NG-tns- C43 -1

和其他谁是不同的浏览产品类别名称可以是

按钮按钮 - 选择NG-tns- C26 -1

Please see this image with console screenshot

+0

是否有可能,你可以修改HTML?将所需值存储在其自己的“数据”属性中而不是绕着“类”属性字符串进行存储会更好。俗话说,'你有问题,你想编辑一个字符串。有人建议正则表达式。现在你有两个问题'。 –

+0

看起来像角生成的,这意味着你可以在生成过程中对其应用某种活动类,然后改变该类,但没有更多信息,不确定我们是否可以提供帮助。 –

+0

@NelsonYeung - 嗨尼尔森 - 这是正确的。它是一个有角度的网站。我只是想知道是否有可能的正则表达式匹配? 。不是专家,但这就是我正在使用的 - 但它不适用于jQuery(“span.button.button - select [class * =”ng-tns - “]。is-selected”)。text(); – teluram

回答

0

关键是要提取所有的类整个DOM,然后通过他们搜索和发现与ng-tns-启动类。

var values = []; 
 
var allClasses = []; 
 
var allElements = document.querySelectorAll('*'); 
 

 
for (var i = 0; i < allElements.length; i += 1) { 
 
    var classes = allElements[i].className.split(/\s+/); 
 

 
    for (var j = 0; j < classes.length; j++) { 
 
    var cls = classes[j]; 
 

 
    if (cls && allClasses.indexOf(cls) === -1) { 
 
     allClasses.push(cls); 
 

 
     if (cls.startsWith('ng-tns-')) { 
 
     var ngTns = document.getElementsByClassName(cls); 
 

 
     for (var k = 0; k < ngTns.length; k += 1) { 
 
      if (ngTns[k].hasAttribute('is-selected')) { 
 
      values.push(ngTns[k].innerText); 
 
      } 
 
     } 
 
     } 
 
    } 
 
    } 
 
} 
 

 
console.log(values);
<div class="button--select"> 
 
    <span class="ng-tns-c43-1">500</span> 
 
    <span class="ng-tns-c43-1" is-selected>200</span> 
 
    <span class="ng-tns-c43-1">100</span> 
 
</div>