この問題を解決するには、いくつかのアプローチを取ってきましたが、私のソリューションの柔軟性には本当に満足していません。私はjavascriptで作成されたオブジェクトを自分のhtmlドキュメントのコンテナにマップしようとしています。HTMLコンテナへのJavascriptオブジェクトの一致
例を挙げておきます。
var PhoneNumber = function(number, type) {
this.number = number;
this.type = type;
}
var myPhone = new PhoneNumber('5555555555', 'Home');
そして、私のHTMLドキュメント内、私は基本的にforementionedオブジェクトによって移入して、ユーザに表示されるのを待って、空のコンテナですDIVの一連のを持っている:私はJavaScriptで電話番号のオブジェクトを持っていると言います。
<div id="phoneNumberContainer">
<div class="row">
<div id="number"></div>
<div id="type"></div>
</div>
</div>
は今、私は自動的にその電話番号のオブジェクトを取得し、そのデータをphoneNumberContainer要素を記入します私のjavascript内の関数を持っていると思います。私は異なるパラメータを持つオブジェクトの複数のタイプを持っているので、それは一般的でなければなりません。
は現在、私は自分自身は、この多くのをやって見つける:
もちろんうまく動作しますが、一つ一つのオブジェクトのために何度も何度も同じコードの多くを書くための呼び出しは、私がしたいfunction mapPhoneNumber() {
var numberContainer = document.getElementById('number');
numberContainer.innerHTML = myPhone.number;
var typeContainer = document.getElementById('type');
typeContainer.innerHTML = myPhone.type;
}
地図。私はので、私はちょうど関数にオブジェクトやコンテナを渡すことができますし、それが自動的にオブジェクトに基づいてDIV要素を取り込み、このようにそれを行う方法があったことを望む:もちろん
function mapPhoneNumber(phoneObject) {
var phoneContainerChildren = document.getElementById('phoneNumberContainer').childNodes;
for(x in phoneContainerChildren) {
phoneContainerChildren[x] = myPhone.number;
}
}
これは実施例ではありませんコンテナの順番が電話番号オブジェクトと同じであることが保証されていないため、子供はdivなどの横に他のタイプのノードを持ちます。電話番号パラメータ名をDIV要素の実際のIDに入れることができますそれをオブジェクトと照合して一致したオブジェクトを埋めますが、別のデザイナーによって変更された場合、私のjavascriptが完全に破壊されるようなDIV要素にそのような特定のIDを持つ必要はありません。
誰かが私のような何かを実装する方法についての提案はありますか?私はjQueryに反対しているわけではありません。
「id = "phoneNumberContainer"、 'id =" number "'、 'id =" type "' "のオブジェクトを複数持っていますか?もしそうなら、あなたはそれをすることはできません。それらをクラスに変更します。与えられたIDはページごとに1回しか使用できません。 – jfriend00
私のhtmlでは、phoneNumberContainerは本質的にテンプレートです。私はIDを使用して全体にクローンを作成し、データを入力してからHTMLに戻します。私は多かれ少なかれ手動ではなく、コンテナの子を自動的に埋める方法に関心を持っています。 – ryandlf
矛盾したIDをクローンした後に取り除きますか? idsの代わりにクラスをどのように使用したかについては、私の答えを見てください。 – jfriend00