2011-01-22 25 views
1

私はidが "name"と "address"の2つのフィールドを持っているとしましょう。私はdivメッセージに実際の値を表示したいと思っています。そして、私はjqueryを使用してページ内のDOM要素値を取得する方法

<input type="text" id="name" value="MyName" /> 
<input type="text" id="address" value="myaddress" /> 

<div style="visibility:hidden"> 
    <div>Your name is $(name)</div> 
    <div>Your address is $(address)</div> 
</div> 

をした私は、私は空の名前とアドレスを取得しています

<div style="visibility:hidden"> 
    <div>Your name is <script>$("input[id=name]").val()</script></div> 
    <div>Your address is <script>$("input[id=address]").val())</script></div> 
</div> 

を試してみました。

Questtionはどのように修正できますか?よりよいアプローチはありますか? like

<div style="visibility:hidden"> 
    <div>Your name is <script>GetValue(name)</script></div> 
    <div>Your address is <script>GetValue(address)</</script></div> 
</div> 

値を置き換えるためにjqueryを使用しますか?

+0

'$( 'name')。val()'もっと意味がありますか?指定されたページ内でIDは一意であると想定されるため、「特定の」IDを絞り込んで絞り込む理由はまったくありません。 –

+0

jQueryがJavaScriptをHTMLから保護する理由の1つはありませんか? (構造からの振る舞い?) – nowayyy

+0

HTMLはスタティック言語(厳密には言語ではない)なので、JavaScript変数にアクセスすることはできません。それはJavaScriptをHTML値に設定することで、逆の方向に進む必要があります。 – Mayank

答えて

1

はこれを試してみてください:

<input type="text" id="name" value="MyName" /> 
<input type="text" id="address" value="myaddress" /> 
<div style="visibility:hidden">  
    <div>Your name is <span id="userName"></span></div> 
    <div>Your address is <span id="userAddress"></span></div> 
</div> 
<script type="text/javascript"> 
    $(function(){ 
     $("#userName").text($("#name").val()); 
     $("#userAddress").text($("#address").val()); 
    }); 
</script> 
1

.val()は値を返しますが、DOMにそれを書き込みません。あなたはそれがdocument.writeを使って仕事を得ることができます:

<div style="visibility:hidden"> 
    <div>Your name is <script>document.write($("input[id=name]").val());</script></div> 
    <div>Your address is <script>document.write($("input[id=address]").val());</script></div> 
</div> 

しかし、より良いアプローチは、私がここにjsfiddle作成した

<div style="visibility:hidden"> 
    <div id="name-div"></div> 
    <div id="address-div"></div> 
</div> 

<script> 
$("#name-div").text("Your name is " + $("#name").val()); 
$("#address-div").text("Your address is " + $("#address").val()); 
</script> 
+0

私のアプローチがうまくいかなかった理由は分かりました。最初の解決策はすばらしく見栄えが良いです。私は関数呼び出しを使ってこれを行うことができます。二番手が良いですが、私はすべてのフィールドを事前に知り、それをコード化する必要があります。 – Jon

0

の線に沿ってより多くのだろう方法:http://jsfiddle.net/7se87/

$("input").keyup(function() { 
    var spanclass = $(this).attr('id'); 
    var value = $(this).val(); 
    $("span."+spanclass).text(value); 
}).keyup(); 

<input type="text" id="name" value="MyName" /> 
<input type="text" id="address" value="myaddress" /> 

<div style="display:block;"> 
    <div>Your name is <span class='name'></span></div> 
    <div>Your address is <span class='address'></span></div> 
</div> 
+0

ありがとう、私はそれがdocument.readyを使用して行うことができると思いますページの読み込み中に完了します。 を使用する代わりに、のようなものを実行できますか?もしそうでなければ、これは私にとっては良いもののように見えます。 – Jon

0

2つの結果のdivs idsを与え、包含する(隠れた)divを与えます:

<input type="text" id="name" value="MyName" /> 
<input type="text" id="address" value="myaddress" /> 

<div id="result" style="visibility:hidden"> 
    <div id="result_name"></div> 
    <div id="result_address"></div> 
</div> 

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery('#name').change(function() { 
     jQuery('#result_name').text('Your name is ' + jQuery(this).val()); 
    }); 

    jQuery('#address').change(function() { 
     jQuery('#result_address').text('Your address is ' + jQuery(this).val()); 
    }); 

    jQuery('#result').css('display', 'block'); 
}); 
</script> 
+0

これは良いですが、私のシナリオではさらに多くのフィールドがあり、各フィールド変更イベントのコードを書くのは面倒です。 – Jon

関連する問題