2017-04-20 4 views
0

私はHTML Emailテンプレートを使用するアプリケーションを持っています。私は、電子メールテンプレートのHTMLを解析してコードを変更するスクリプトを作成したいと思います。これはテンプレートがページにロードされているときは簡単ですが、HTMLが<textarea>(または具体的にはCodeMirror)の値である場合は、これらを動的に実行したいと考えています。私が試したjQuery変数に全体のHTMLページを保存

<!doctype html> 
<html> 
    <head>...HEAD HTML...</head> 
    <body>...BODY HTML...</body> 
</html> 

<textarea>(CodeMirror)の値は、次のようになります

// This part works great. Stores the HTML as a varaible. 
var template_html = codeMirrorInstance.getValue(); 

// This shows the proper HTML in console as text 
console.log(template_html); 

// From here I can't access the HTML though 
console.log($(template_html).find('body')); 

しかし、私はundefinedを得続けます。私が試みていることは何も...どんなアイディアですか?

+0

あなたがそれから得ることを期待したのは何?今すぐ文字列があり、子オブジェクト/要素を検索する 'find()'があります – DaniP

+0

私はjQueryリファレンスでテキストをラッピングしています。 '$(template_html).find( 'body')'に気づくでしょう。私は何かが欠けていない限り、通常は実行可能です。 – DigitalMC

+0

文字列を参照に渡すだけで、有効なJqueryオブジェクトにすることはできますか?私はそう思わない – DaniP

答えて

3

あなたがしようとしていることができるようです。新しい文書と場合によってはjQueryの2番目のインスタンスを作成するだけです。

あなたはこれを見て取る必要があります:https://stackoverflow.com/a/15496537/1819684とこれを:https://stackoverflow.com/a/15479402/1819684

$(function() { 
 
    var doctype = document.implementation.createDocumentType('html', '', ''); 
 
    var dom = document.implementation.createDocument('', 'html', doctype); 
 
    
 
    var jq2 = jQuery(dom); 
 
    var txt = $('textarea').val(); 
 
    
 
    console.log(jq2.find('html').html(txt).find('body')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea> 
 
<html> 
 
    <head>...HEAD HTML...</head> 
 
    <body>...BODY HTML...</body> 
 
</html> 
 
</textarea>

+0

これは完璧に機能しました!参考にさせていただきありがとうございます。 ) – DigitalMC

関連する問題