javascript
  • jquery
  • jquery-plugins
  • 2012-04-25 8 views 0 likes 
    0

    テキストテンプレートを作成してプレースホルダに設定し、このプレースホルダを埋めてページに使用しますか? jQueryでプレースホルダを使用するには?

    var temp = '<div class="persons">'; 
    temp += '<p> <span class="firstname">First Name :</span> <span> [firstname]</span> </p>'; 
    temp += '<p> <span class="lastname">Last Name :</span> <span> [lastname]</span> </p>'; 
    temp += '<p> <span class="tel">Telephone :</span> <span> [tel]</span> </p>'; 
    temp += '</div>'; 
    

    と、ページ内の私の価値観やショーで[firstname][lastname][tel]を変更...のような? または他のアイデアですか?

    +1

    何を試しましたか?また、既存のJSテンプレートエンジンを見てください。 –

    +0

    詳細をご説明ください。 – AmirHossein

    +1

    sprintf/format形式の関数を使用してください:http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format/4673436#4673436 –

    答えて

    2

    .replace()を試しましたか?

    http://jsfiddle.net/KL9kz/

    +0

    ありがとうlot ;-) – AmirHossein

    2

    あなたは単にそれらを置き換えることができます。

    temp.replace("[firstname]", "fred").replace("[lastname]", "smith").replace("[tel]", "123456789");

    jQueryテンプレートを使用しているかどうかはわかりません。

    +0

    私はjQuery 1.71を使用しています – AmirHossein

    3

    クイック&汚いJSテンプレートエンジン: を必要に応じて

    // Create a matching object for each of your replacement 
    var matches = { 
        "[firstname]": "fred", 
        "[lastname]": "smith", 
        "[tel]": "123456789" 
    } 
    
    // Loop through the keys of the object 
    Object.keys(matches).forEach(function(key) { 
        // Replace every key with its value 
        temp = temp.replace(key, matches[ key ]) 
    }) 
    
    +1

    私は本当に 'Object.keys()'が好きです。それについて以前は知らなかった。しかし、影響を与えるためには 'replace()'の結果をオブジェクト自身で操作していないので保存しなければなりません。こちらをご覧ください:http://jsfiddle.net/6vxKB/1/ – yoshi

    +1

    申し訳ありませんが、私の悪い、私は働いているソリューションを編集中です:)。それをシミングすることはいくつかの行(https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Object/keys)の問題ですが、クロスブラウザではないので、 'Object.keys'に注意してください( 'forEach'についても同様です)。 –

    1

    このような何かを試してみて、非常に基本的な

    function replaceall(tpl, o, _p, p_) { 
        var pre = _p || '%', 
         post = p_ || '%', 
         reg = new RegExp(pre + '([A-z0-9]*)' + post, 'g'), 
         str; 
        return tpl.replace(reg, function (str, $1) { 
         return o[$1]; 
        }); 
    }; 
    var temp = '<div class="persons">'+ 
         '<p> <span class="firstname">First Name :</span> <span> [firstname]</span> </p>'+ 
         '<p> <span class="lastname">Last Name :</span> <span> [lastname]</span> </p>'+ 
         '<p> <span class="tel">Telephone :</span> <span> [tel]</span> </p>'+ 
        '</div>', 
        data = { 
         'firstname':'Fede', 
         'lastname':'Ghe', 
         'tel' : '+00 012 3456789' 
        }; 
    alert(replaceall(temp, data, '\\\[', '\\\]')); 
    

    は、プレースホルダの境界を脱出し、内側の正規表現を調整するcafefulこと助けてくれるといいと思う。

    関連する問題