0

Javascriptがいくつかの異なる変数と結果の関数を計算できるようにしようとしています。正直なところ、私は過去2日間その作業に費やしてきましたが、文字通りここからどこに行くべきかわかりません。私のコードは次のとおりです。

<html>
<title>Calculate Your Monthly Payments</title> 
        <script language = "JavaScript"> 
            function Calc(){ 
            var a, res;             
            a = parseFloat(document.monthly.form.value); 
            res1 = a/1000;
            res2 = a/500;
            res3 = a/300;

            if(document.monthly.payments[1].style.visibility = "visible" )
                window.alert("Your monthly repayments have been estimaded to be £" + res1);

            else if(document.monthly.payments[2].style.visibility = "visible" )
                window.alert("Your monthly repayments have been estimaded to be £ " + res2);

            else(document.monthly.payments[3].style.visibility = "visible" )
                window.alert("Your monthly repayments have been estimaded to be £ " + res3);
            } 

        </script> 
</head> 


<div id="container">

        <h2>Calculate Your Monthly Payments</h2> 
        <h4>Please fill in the form below</h4>
         <form name = "monthly"> 
           How much are you borrowing? (£): <br><input name = "form" type = "text" size = 10 id="textarea"> <br><br>

                Mortgage Type: <br>
                <select name = "payments">
                  <option value="" selected>Please Select </option>
                  <option value="1">Mortgage 2.19% fixed until 2015 </option>
                  <option value="2">Mortgage 3.17% fixed until 2017 </option>
                  <option value="3">Mortgage 3.18% fixed until 2024 </option>
                </select>
                <br><br>                

           <input type = "button" value = "Calculate Payments! " onclick = "Calc();"> 
        </form>
</div>
</html>



「月々のお支払いは...」というポップアップでイベントを表示させようとしています。

私が実装したい方程式は、入力したものを選択したもので割ったものとして機能するはずです。

aが選択された場合、例として1000で除算され
、bが選択された場合、例として500で除算され
、cが選択された場合、例として300で除算されます。

しかし..これはどれも機能しません。

私はコードを何度も繰り返して動作させましたが、イベントが2つのポップアップを表示するときに部分的にしか機能しませんでした。最初はオプション値1で、2番目はオプション値2をクリックした後にそれを置き換えます。

問題はそれです:

ブラウザで表示して[支払いの計算]ボタンをクリックしても、何も起こりません。どうしてこれなの?


私は英語が少し荒いので、これを明確にしたいと思いますが、どんな助けでもいただければ幸いです。

4

6 に答える 6

0

あなたのJavaScriptは意味をなさないようで、たまたまあまり良くない習慣をいくつか公開しています。ドロップダウンで選択したオプションに基づいて、単に異なる値を警告したいようです。その場合は、次のようなスクリプトを挿入することをお勧めします。

<select id="mySelect">
   <!-- Options -->
</select>

<script>
     var selectElement = document.getElementById('mySelect');

     if(selectElement != null)
     {
         selectElement.addEventListener('change', function()
         {
             var selectedOptionValue = this.options[this.selectedIndex].value;

             switch(selectedOptionValue)
             {
                 case 1: // Do Stuff
                    break;
                 case 2: // Do Stuff
                    break;
                 default: // Do Stuff
                    break;
             }
         });
     }
</script>

このようにして、目立たない方法でクリックイベントの値を決定し、必要に応じてアラートを表示するためのコードを提供できます。

于 2012-04-23T20:21:21.550 に答える
0

コードの次の行を調べて、支払い配列を確認する必要があると思います

        if(document.monthly.payments[101].style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £" + res1);

        else if(document.monthly.payments[102].style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £ " + res2);

        else(document.monthly.payments[103].style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £ " + res3);

これをチェックしてください

        if(document.monthly.payments.style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £" + res1);

        else if(document.monthly.payments.style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £ " + res2);

        else(document.monthly.payments.style.visibility = "visible" )
            window.alert("Your monthly repayments have been estimaded to be £ " + res3);
        } 
于 2012-04-23T20:18:52.540 に答える
0

1)Firebugをダウンロードします。または、使用しているブラウザでJavaScriptのデバッグをオンにします。エラーがあることが表示されます。「何も起こらない」理由は、このエラーの後で処理が停止するためです。document.monthly.payments[101]?101とは何ですか?ここで何をしようとしていたのかわからない。

2)あなたはelse(document.monthly.payments[103].style.visibility = "visible" )

else(条件)を持つことはできません。それは他の{...}でなければなりません

3)これを試してください:

  if(document.monthly.payments.selectedIndex == 1)
                window.alert("Your monthly repayments have been estimaded to be £" + res1);

            else if(document.monthly.payments.selectedIndex == 2 )
                window.alert("Your monthly repayments have been estimaded to be £ " + res2);

            else if(document.monthly.payments.selectedIndex == 3 )
                window.alert("Your monthly repayments have been estimaded to be £ " + res3);
            } 

関数も次のようになります。

function Calc(){ 
            if (document.monthly.payments.selectedIndex == 0){
                alert("Please select a mortgage type");
                return;
            }

            var mortgages = [1000,500,300];
            window.alert("Your monthly repayments have been estimaded to be £" + (parseFloat(document.monthly.form.value) / mortgages[document.monthly.payments.selectedIndex-1])  );
            }
于 2012-04-23T20:20:44.393 に答える
0

これは機能します-試してみてください。

<html>
<title>Calculate Your Monthly Payments</title> 
        <script language = "JavaScript"> 
            function Calc(){ 
            var a, res;             
            a = parseFloat(document.monthly.form.value); 
            res1 = a/1000;
            res2 = a/500;
            res3 = a/300;

            if(document.monthly.payments.value == "1" )
            {
                window.alert("Your monthlys repayments have been estimaded to be £" + res1);
            }
            else if(document.monthly.payments.value == "2" )
            {
                window.alert("Your monthly repayments have been estimaded to be £ " + res2);
            }
            else if(document.monthly.payments.value == "3" )
            {
                window.alert("Your monthly repayments have been estimaded to be £ " + res3);
            } 
        }
        </script> 
</head> 


<div id="container">

        <h2>Calculate Your Monthly Payments</h2> 
        <h4>Please fill in the form below</h4>
         <form name = "monthly"> 
           How much are you borrowing? (£): <br><input name = "form" type = "text" size = 10 id="textarea"> <br><br>

                Mortgage Type: <br>
                <select name = "payments">
                  <option value="" selected>Please Select </option>
                  <option value="1">Mortgage 2.19% fixed until 2015 </option>
                  <option value="2">Mortgage 3.17% fixed until 2017 </option>
                  <option value="3">Mortgage 3.18% fixed until 2024 </option>
                </select>
                <br><br>                

           <input type = "button" value = "Calculate Payments! " onclick = "Calc();"> 
        </form>
</div>
</html>
于 2012-04-23T20:38:56.163 に答える
0

jsFiddle ( http://jsfiddle.net/DTTg5/6/ )

<script type="text/javascript"> 
    function calculate()
    { 
        var payments = parseInt( document.getElementById("payments").value );
        var a = parseFloat( document.getElementById("borrowing").value );

        var res1 = a/1000;
        var res2 = a/500;
        var res3 = a/300;

        if ( payments  == 1 )
        {
            alert("Your monthly repayments have been estimaded to be £" + res1);
        }
        else if ( payments  == 2 )
        {
            alert("Your monthly repayments have been estimaded to be £ " + res2);
        }
        else if ( payments  == 3 )
        {
            alert("Your monthly repayments have been estimaded to be £ " + res3);
        }
    } 

</script> 

<form name = "monthly"> 
    How much are you borrowing? (£):
    <br/>
    <input name="form" type="text" size="10" id="borrowing"/>
    <br/><br/>
    Mortgage Type:
    <br/>
    <select name="payments" id="payments">
      <option value="0" selected>Please Select </option>
      <option value="1">Mortgage 2.19% fixed until 2015 </option>
      <option value="2">Mortgage 3.17% fixed until 2017 </option>
      <option value="3">Mortgage 3.18% fixed until 2024 </option>
    </select>
    <br/><br/>                
    <input type="button" value="Calculate Payments!" onclick="calculate();"> 
</form>

</p>

于 2012-04-23T20:28:24.030 に答える
0
        var a, res;             
        a = parseFloat(document.monthly.form.value); 
        res1 = a/1000;
        res2 = a/500;
        res3 = a/300;

より優れた、防御的なコーディング:

        var a;             //declare only one variable on a line
        a = parseFloat(document.getElementById("borrowing").value) ;
        if (isNaN(a)) {
           alert("please enter nn.nn");
           return;
        } 
        var res1 = a/1000;
        var res2 = a/500;
        var res3 = a/300;
于 2012-04-23T20:32:45.177 に答える