2016-04-06 7 views
0

Ich habe versucht, einen Block der Zeichenfolge aus einer Zeichenfolge mit HTML-Tags zu teilen. Meine Eingabe istJavascript: Split Blöcke aus einer Zeichenfolge mit HTML-Tags?

var data = '<html> 
    <body> 

     <div class="test"> 
     <input type="text"/> 
     </div> 

     <div class="test"> 
     <input type="text"/> 
     </div> 

     <div class="test2"> 
     <input type="text"/> 
     </div> 

    </body> 
</html>' 

Mein vorbehalten Ausgabe ist

'<div class="test"> 
    <input type="text"/> 
    </div> 

    <div class="test"> 
    <input type="text"/> 
    </div>' 

ich schon versucht, diese

data.split('<div class="test">'); 
+0

was 'test2'? Sie möchten es überspringen? –

+0

Ja ich möchte überspringen test2 – Jothimani

+1

HTML nicht manuell analysieren. Verwenden Sie native DOM-Methoden – hindmost

Antwort

3

erstellen dummy div Element. innerHTML die data in div. Sie können Klassenelemente aus div wählen getElementsByClassName

var data = '<html>\ 
 
    <body>\ 
 
     <div class="test">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
     <div class="test">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
     <div class="test2">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
    </body>\ 
 
</html>' 
 
var div = document.createElement('div'); 
 
div.innerHTML = data; 
 
var classes = div.getElementsByClassName('test'); 
 
console.log(classes);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

bearbeiten mit: Wenn Sie es als string möchten, können Sie collection von getElementsByClassName zurücklaufen, drücken Sie es in array und Array#join es.

var data = '<html>\ 
 
    <body>\ 
 
     <div class="test">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
     <div class="test">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
     <div class="test2">\ 
 
     <input type="text"/>\ 
 
     </div>\ 
 
    </body>\ 
 
</html>'; 
 
var div = document.createElement('div'); 
 
div.innerHTML = data; 
 
var classes = div.getElementsByClassName('test'); 
 
var arr = []; 
 
[].forEach.call(classes, function(elem) { 
 
    arr.push(elem.outerHTML); 
 
}); 
 
console.log(arr.join('')); 
 
console.log('==============OR==============='); 
 
var div2 = document.createElement('div'); 
 
[].forEach.call(classes, function(elem) { 
 
    div2.appendChild(elem.cloneNode(true)); 
 
}); 
 
console.log(div2.innerHTML);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

+0

Sehr geehrte Rayon Danke, ich will es als String – Jothimani

+0

Überprüfen Sie die Bearbeitung .. – Rayon

+0

Ich habe das erste Element 'test', aber ich brauche alle Elemente mit Klasse 'test' – Jothimani

Verwandte Themen