2011-12-02 16 views
0

オブジェクトの動的(ユーザー入力からの)値を作成したいが、私は "未定義"となる。アイデアは3つの入力フィールドを持つことで、ユーザーは警告メッセージをいっぱいにする値を入力する必要があります。オブジェクトのプロパティの動的値

<script type="text/javascript"> 
function Family (fatherName, motherName, sisterName) { 

    this.fatherName = fatherName; 
    this.motherName = motherName; 
    this.sisterName = sisterName; 
    this.myFamily = function() { 
     alert("My father's name is " + this.fatherName +", my mother's name is "+ this.motherName +" and my sister's name is " + this.sisterName +"."); 
    } 

} 

var Me = new Family(
    Family["fatherName"] = father, 
    Family["motherName"] = mother, 
    Family["sisterName"] = siter); 

var father = document.getElementById("fatherId").value; 
var mother = document.getElementById("motherId").value; 
var sister = document.getElementById("sisterId").value; 
</script> 

<input type="text" id="fatherId" /> 
<input type="text" id="motherId" /> 
<input type="text" id="fatherId" /> 
<input type="submit" value="Send" onclick="Me.myFamily();"> 

また、ユーザーがプロパティを追加したり削除したりする方法も探しています(値も同じです)。

+1

'var Me = ....'と 'var father = ....'の順番を入れ替えます。 –

+0

私は最後の文を理解していません。どんな特性について私たちは話していますか?ユースケースを提供できますか? – kubetz

答えて

1

Hereは、あなたの例の作業スニペットです。

<input type="text" id="fatherId" /> 
<input type="text" id="motherId" /> 
<input type="text" id="sisterId" /> 
<input type="submit" value="Send" id="submit" /> 

<script> 
    function Family(fatherName, motherName, sisterName) { 

     this.fatherName = fatherName; 
     this.motherName = motherName; 
     this.sisterName = sisterName; 

     this.myFamily = function() { 
      alert("My father's name is " + this.fatherName + 
       ", my mother's name is " + this.motherName + 
       " and my sister's name is " + this.sisterName + "."); 
     }; 

    } 

    document.getElementById("submit").onclick = function() { 
     var father = document.getElementById("fatherId").value; 
     var mother = document.getElementById("motherId").value; 
     var sister = document.getElementById("sisterId").value; 

     Me = new Family(father, mother, sister); 
     Me.myFamily(); 
    } 
</script> 

すべてのミスをブランドンによって非常によくまとめられています。

* EDIT:(コメントへのANSER)

あなたのコードでは、2つの実行に関連する問題があります。あなたが<input>一部前にスクリプトを挿入した場合

  • <script>タグは、直ちにそのために実行され、あなたが取得するために利用可能なinput要素はありません。
  • 入力の値を取得する場合、ユーザーがsubmitをクリックするとデータが含まれるため、.value()を使用してonclickの時間を読み取る必要があります。 onclickの部分の外でそれらを読み取ろうとすると、入力フィールドが空のときにページがロードされている間すぐにアクセスされます。
+0

ありがとう、それは動作します!私はただ一つのことだけを求めたい。以前の編集されたバージョンでは、document.getElementById( "submit")はありません。値を表示するためにリロードする必要がありますが、すべて正常に動作します。つまり、送信ボタンを最初に定義する必要があるので、送信ボタンをクリックすると値が表示されます。 – sundaysloth

+0

@RalitsaNikiforovaエラーを修正するために私の答えを編集しなければならなかったが、今はすべてうまくいくはずだ。私は、あなたの例の部分の正しい配置に関する答えに、より詳細な情報を追加しました。場合は明らかに気にしないでください:)。 – kubetz

2

コードにはいくつか問題があります。

あなたはここに

var father = document.getElementById("fatherId").value; 
var mother = document.getElementById("motherId").value; 
var sister = document.getElementById("sisterId").value; // Doesn't exist 

あなたが最初の変数を宣言しているように、文を切り替えてみてくださいそれらを宣言する前に、ここで

Family["fatherName"] = father, 
Family["motherName"] = mother, 
Family["sisterName"] = siter); // This should be sister by the way 

あなたの変数を使用しました。

また、sisterIdはありません。fatherIdを2回使用しました。

DOMの準備が整う前にjavascriptも呼び出しています。あなたはjQueryのを使用している場合は、

$(document).ready(function() { } 

であなたのJSをラップしたり、プレーンなJSに固執する場合は、myFamilyがになっているものについて、より具体的にする必要があります

window.onload = function() { } 

を試してみてくださいあなたがその方法について言及していないからです。

+0

まず最初に変数を宣言しますが、それはまったく機能しません。なぜ機能onloadをキャリブレーションするのですか?オンロード値はまだありません。 IDは10倍に固定しました。 – sundaysloth

+0

厳密に言えば、順序が違う宣言ではなく、値の割り当て(同じステートメント内にあります)です。 – RobG

+0

@ RalitsaNikiforova - コードの実行時に入力値に値が存在しない(または存在することさえある)ためです。入力値を与え、DOMで作成したコードを実行すると、コードが動作します。 – RobG

関連する問題