3

私は例えばこれを持っています:

<td "class=name">
    <span class="removed">one</span>
    <span class="added">two</span>
</td>

またはこれ:

<td class=name> one
    <span class="removed">two</span>
    <span class="added">three</span>
</td>

またはこれ:

<div>
    one
    <span class="added">two</span>
    three four 
    <span class="removed">five</span>
    six
</div>

JavaScript(JQueryなし)でこれを変更したい:

<td "class=name">
    two
</td>

またはこれ:

<td class=name> 
    one
    three
</td>

またはこれ:

<div>
    one
    two
    three
    four
    six
</div>

それを理解することはできません。replaceWith などの多くの jquery のものしか見つかりませんでしたが、純粋な JavaScript が必要です

4

3 に答える 3

2

削除したいすべてのスパンタグに削除または追加のクラスがあり、クラスを使用してそれらをテストしても他のhtmlに影響しない場合は、これを試すことができます。

var spans = document.getElementsByTagName("span");

for(var i=0; i<spans.length;i++)
{
  if(spans[i].className == "added")
  {
     var container = spans[i].parentNode;
     var text = spans[i].innerHTML;
     container.innerHTML += text;
     container.removeChild(spans[i]);
  }
  else if(spans[i].className == "removed")
  {
      var container = spans[i].parentNode;
      container.removeChild(spans[i]);
  }
}

それ以外の場合は、おそらくスパン タグのコンテナーを取得して同様のことを行うために、ID またはクラス名で方法を見つける必要があります。例えばこんな感じ

var myDiv = document.getElementById("myDiv");
var spans = myDiv.getElementsByTagName("span");   

for(var i=0; i<spans.length;i++)
{
  if(spans[i].className == "added")
  {
     var text = spans[i].innerHTML;
  }
  myDiv.innerHTML += text;
  myDiv.removeChild(spans[i]);
}

お役に立てれば

編集

これを単純化する関数を使用してこのコードを実装する方法については、こちらを試してください。反復可能getElementsByClassName()な配列を返します。getElementsByTagName()

于 2012-09-25T08:32:46.530 に答える
-3

次のコードを使用して、任意の html クラスを削除できます。

<div id="target_div">one<span class="added">two</span>three four<span class="removed">five</span>six</div>



<script type="text/javascript">
function remove_html_tag(tag,target_div){
        var content=document.getElementById(target_div).innerHTML;
        var foundat=content.indexOf("<"+tag,foundat);
        while (foundat>-1){
            f2=content.indexOf(">",foundat);
            if (f2>-1) {content=content.substr(0,foundat)+content.substr(f2+1,content.length);}
            f2=content.indexOf("</"+tag+">",foundat);
            if (f2>-1){content=content.substr(0,f2)+content.substr(f2+3+tag.length,content.length);}
            foundat=content.indexOf("<"+tag,foundat);
        }document.getElementById(target_div).innerHTML=content;}
</script>

<a href="javascript:remove_html_tag('span','target_div')">Remove span tag</a>
于 2012-09-25T09:15:05.263 に答える