2

私はこれを持っています

str = testString.replace(/<div style="(.*?)">(.*?)<\/div><div style="\1">/g, '<div style="$1">$2<br>');

削除します

<div style="text-align: right;">text1</div>
<div style="text-align: right;">text2</div>

の中へ

<div style="text-align: right;">
    text1<br>text2
</div>

すごい!

複数<div>の がある場合はどうなりますか?

どうすれば作れますか

<div style="text-align: right;">text1</div>
<div style="text-align: right;">text2</div>
<div style="text-align: right;">text3</div>
<div style="text-align: right;">text4</div> 

の中へ

<div style="text-align: right;">
    text1<br>text2<br>text3<br>text4
</div>

?

4

2 に答える 2

1

firstDOMから要素をすでに選択していると仮定します...

var next = first.nextElementSibling;

while (next && next.nodeName.toUpperCase() === "DIV") {
    first.appendChild(document.createElement('br'))
    first.appendChild(next.firstChild)
    next = next.nextElementSibling
}

空のdivをDOMから削除していないことに気づきました。あなたがそれを望むなら、あなたはこれをすることができます...

var next;

while ((next = first.nextElementSibling) && next.nodeName.toUpperCase() === "DIV") {
    first.appendChild(document.createElement('br'))
    first.appendChild(next.firstChild)
    next.parentNode.removeChild(next);
}
于 2012-07-12T12:25:02.050 に答える
0

複雑な HTML 操作に正規表現を使用することはできません! この質問を参照してください。jQuery を使用して DOM を操作して、同じ結果を得ることができます。

代替案については、この jsfiddle の例を参照してください。

これは、必要な div が id のラッピング div にあると仮定した場合の、フィドルからの jQuery コードですtoParse

$('body').ready(function() {

var template = $('#toParse div').first().clone();

var result = "";
$('#toParse div').each(function(index, element) {
    result += $(element).html();
    result += "<br/>";
});

// you can add some extra code here to remove that 
// extra final <br/>

$('#toParse').html($(template).html(result));
console.log(result); 
});​
于 2012-07-12T12:21:15.843 に答える