2017-09-08 4 views
-4

私は実際にjqueryで選択した量を抽出したいが、CSSクラス内の1つの文字列(イメージでは黄色で強調表示されている)が製品ごとに変更されています。選択NG-tns- C43 -1このCSSから値を抽出する方法

と異なるとブラウジングをしている者、他のための - だから、iphone 7選択したクラス名を持つこのページにはいくつかの訪問者のため

ボタンボタン可能性があり製品のクラス名は

ボタンボタンすることができます - 選択NG-tns- C26 -1

Please see this image with console screenshot

+0

それはあなたがHTMLを修正することができますことは可能ですか? 'class'属性文字列をハッキングするのではなく、それ自身の' data'属性に必要な値を格納するほうがずっと良い方法でしょう。 「あなたには問題があります。文字列を編集する必要があります。誰かがRegexを提案します。今、あなたには2つの問題があります。 –

+0

角度生成のように見えます。つまり、生成中に何らかのアクティブなクラスを適用してから、そのクラスを変更することができます。 –

+0

@NelsonYeung - Hi Nelson - これは正しいです。それは角度のあるwebisteです。正規表現マッチングが可能かどうか疑問に思っていましたか? 。エキスパートではありませんが、これは私が使っていたものですが、ofcouse jQuery( "span.button.button - select [class * =" ng-tns - "]。 – teluram

答えて

0

トリックはそれらを介して検索し、ng-tns-で始まるクラスを見つけ、その後、全体のDOMのためのすべてのクラスを抽出することです。

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>

関連する問題