2016-04-09 11 views
1

私は、自分がやるクラスのデータベースに接続するWebアプリケーションの開発に取り組んでいます。私が取り組んでいる特定のページには、郵便番号のために利用可能な一種のインターネットサービスが表示されます。サービスはラジオボタンとして表示され、既にチェックされているラジオボタン(ページが読み込まれたとき)または手動でチェックされたラジオボタンに基づいて価格を表示/変更します。以下は#servicePriceStringのtext/innerHTMLを変更するスクリプトです。javadocを使用して動的にHTMLコンテンツを変更しています

何らかの理由で価格が表示されないだけでなく、私はshowPrice()関数をalert()のような単純な関数でテストしましたが、どちらもうまくいかないようです。どんな助力/提案も非常に高く評価されるでしょう。サイドノート、私はこれで本当に新しいので、フォーマットが悪い/悪いコードでは簡単に取る;)

編集:私は、入力がフォームの外にあり、それを修正したことを知っています。まだ動作していません。また、私は "varのcheckvalue"を使用していないことを知っています。私は以前にそれを使用していたが、まだそれを削除していない。

<script type="text/javascript"> 
    function showPrice(i) { 
     var myRadio = document.getElementById("availableService"); 
     var checkedValue = myRadio.filter(':checked').valueOf(); 
     price = rs[0][i].monthly_price; 
     document.getElementById("servicePriceString").innerHTML = price; 
    } 


</script> 

<form action="/placeorder"> 
     <% for (var i=0; i < rs[0].length; i++) { %> 

      <div id="serviceAvailableArea"> 
       <input onclick="showPrice(<%= i %>)" type="radio" id="availableService" name="availableService" 
       value="<%= i %>"> 
       <%= rs[0][i].service_name %> at <%= rs[0][i].speed %>Mbps 
      </div> 
      <br/> 

     <% }%> 
     </form> 
    <input type="submit" value="Place Order" id="placeOrderButton"> 
    <div id="servicePrice"> 
     <p id="servicePriceString">test</p> 
+1

あなたの送信した入力は、あなたのフォームの中にあるはずです。 – nhouser9

+0

ありがとう、私は実際にそれを投稿した後に気づいた。しかし、まだ動作しません:( –

+0

HTML文書内でIDは一意でなければなりません。 – CBroe

答えて

0

あなたのvar checkedValue = myRadio.filter(':checked').valueOf();からundefinedを取得される可能性が高いです。結果をコンソールに表示するにはconsole.log(checkedValue)を使用してください。

もう一つの方法は、このようなあなたの値を取得している:

は、フォームに名前を追加します。<form action="/placeorder" name="servicesForm">

あなたのラジオボタンから重複したIDを削除する(あなただけの自分の名前、それらを必要としない)

次に、あなたの関数で:

function showPrice(i) { 
     var checkedValue = servicesForm.availableService.value; 
     price = rs[0][i].monthly_price; 
     document.getElementById("servicePriceString").innerHTML = price; 
    } 

は説明:あなたは、フォームを持っている場合、ブラウザは、そのフォームのためのオブジェクトを生成しますあなたは自動的にdocument.getElementByIdで入手する必要はありません。

また、rs[0][i].monthly_priceが正しい価格を提供しているかどうかを確認してください。

[EDIT2]

オクラホマので、showPrice()は実際に呼び出されていませんさん。

(function() { 
    servicesForm.availableService.onclick = function() { 
       var checkedValue = servicesForm.availableService.value; 
       var price = rs[0][checkedValue].monthly_price; 
       document.getElementById("servicePriceString").innerHTML = price; 
      } 
})(); 

私はあなたの呼び出しをクロージャー内にラップしました。この手法に関する詳しい情報はこちらJavaScript closures vs. anonymous functions

+0

うわー、 console.log(checkedValue)はコンソールに何も表示していませんが、console.log()も表示されません。 "テスト") –

+0

私の答えを編集しました。今度はあなたの関数が呼び出され、デバッグすることができます –

+0

あなたの継続的な努力に感謝します。ところで、 'console.log()'文のように '.monthly_price'が正しい値を返すことを知っています。私はそのデータをデータベースから返す。 –

関連する問題