2016-05-10 7 views
3

私たちは、バックエンドAPIからいくつかのコンテンツをIonic 2 Appに送ります。質問と回答。アンサーはsummernoteを使用して作成されているため、生のHTMLをアプリケーションにレンダリングすることができます。しかし、画像のズームを可能にするには、答えコンテンツにimgというタグをすべて置き換える必要があります。唯一純粋なJavaScriptのを使用して純粋なjavascriptを使用してHTML文字列をimgタグに置き換える方法

<ion-scroll scrollX="true" scrollY="true"> 
    <img src="pathofimg" attribute1="att1" ...> 
</ion-scroll> 

<img src="pathofimg" attribute1="att1" ...> 

私は正規表現が良いアプローチであることを知っていますが、提案があります。

+2

正規表現とテキストベースの交換は、おそらく最も簡単で簡単な方法です。特に多くのタグを変更する必要がある場合は、DOMの操作が遅くなる可能性があります。 – NickSlash

+1

htmlでregexを使用していますか? [楽しい、楽しい...](http://stackoverflow.com/a/1732454/615754) – nnnnnn

+0

はい。私はそれほど簡単ではないことを知っていますが、これはjQueryを使用せずに行う唯一の方法です:) –

答えて

0

例として、これは各子要素<span>をラッパー要素<p>にラップします。エレメント名とセレクターを自分で置き換えるだけです。親要素を選択しにくい場合は、document.querySelector()を使用します。

<div> 
    <span>0</span> 
    <span>1</span> 
    <span>2</span> 
    <span>3</span> 
    <span>4</span> 
</div> 

<script> 
    var commonParentElement = document.getElementsByTagName('div')[0]; 
    var imgs = commonParentElement.getElementsByTagName('span'); 

    for (var i=0; i<imgs.length; i++) { 
     var wrap = document.createElement('p'); 
     wrap.setAttribute('style', 'font-weight:bold;'); 
     wrap.appendChild(imgs[i]); 
     commonParentElement.insertBefore(wrap, imgs[i]); 
    } 
</script> 

Here in a plunker

+0

答えをありがとう。私たちはイオンアプリとしてdocument.getElementsByTagNameを取得することはできません。文字列に直接作用させる必要があります。レンダリングされたdivではありません。 –

+0

ああ、大丈夫、それを知らなかった。 AngularのjqLit​​eを使用できますか? – C14L

0

、あなたの質問にのみjavascriptタグを追加しましたとおり、ここでは「ネイティブ」document.getElementsByTagNameelement.replaceChild方法を使用して解決されています

var images = document.getElementsByTagName('img'), 
    len = images.length, img, ion, parent; 

while (len--) { 
    ion = document.createElement("ion-scroll"); 
    ion.setAttribute("scrollX", "true"); 
    ion.setAttribute("scrollY", "true"); 

    img = images[len]; 
    parent = img.parentNode; 
    ion.innerHTML = img.outerHTML; 
    parent.replaceChild(ion, img); 
} 
関連する問題