0

私はプログラミングが初めてで、いくつかの問題があります。いくつかの計算を行うことができる 1 つのフォーム (html および javascript) を作成したいと思います。これは数と年についてです。最初に、入力フィールドに年を入力する必要があります (2013 など)。この入力値は、いくつかの関数に接続されます。

  1. 現在の年との差を計算します (2018 年を求める場合は 5 を、2000 年を求める場合は -13 を書く必要があります...)
  2. その年がうるう年かどうかを確認します (true/false または yes/no など)。
  3. 私が尋ねる数の合計を計算します (2018 = 11, 2013 = 6, ...)
  4. 素数の場合 (真/偽、はい/いいえ、...)
  5. 逆数 (2013 年 = 3102、2018 年 = 8102、...)
  6. 年の干支を表示する
  7. 年をローマ数字に変換 (1=I、2=II、10=X、...)

私はいくつかの機能を見つけましたが、これをうまくまとめることはできません。誰かがこれを手伝ってくれればとても助かります。

インターネットで見つけた例:

function isleap() {
    var yr = document.getElementById("year").value;
    if ((parseInt(yr) % 4) == 0) {
        if (parseInt(yr) % 100 == 0) {
            if (parseInt(yr) % 400 != 0) {
                alert("Not Leap");
                return "false";
            }
            if (parseInt(yr) % 400 == 0) {
                alert("Leap");
                return "true";
            }
        }
        if (parseInt(yr) % 100 != 0) {
            alert("Leap");
            return "true";
        }
    }
    if ((parseInt(yr) % 4) != 0) {
        alert("Not Leap");
        return "false";
    }
}

逆行する:

<script type="text/javascript">
    var year, b = 0;
    year= parseInt(prompt("Enter year: "));

    document.write("You've entered: " + year+ "<br />");
    while(year> 0) {        
        b = b * 10
        b = b + parseInt(year% 10)
        year= parseInt(year/ 10)
    }
    document.write("Reverse numbers: ", b);

</script>

合計数:

<script>
function find() {
    var sum = 0;
    var no = parseInt(frm.txt1.value);
    while (no > 0) {
        sum = sum + no % 10;
        no = Math.floor(no / 10);
    }
    alert("Sum of digits  " + sum);
}
</script>

<form name="frm">
    Enter a Number:<input name="txt1" type="text" />
    <input name="b1" onClick="find();" type="button" value="display" />
</form>
4

5 に答える 5

2

懸念事項を分離するのがベスト プラクティスと考えられています。私はDOM抽象化ライブラリとして jQuery を使用しています。これは非常に簡単です。

次のような入力を使用します。

<input id="b1" name="b1" type="button" value="display" />

次のようにjQuery on メソッドを使用できます。

$('#b1').on('click', function (event) { alert('I was clicked'); });

$('#b1').on('click', function (event) { alert('I heard that click too'); });

任意の関数を呼び出すことができます:

$('#b1').on('click', isLeap);

次のスニペットを使用して、ページに jQuery を含めることを忘れないでください。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

于 2013-03-18T13:44:43.670 に答える
1
   <input name="b1" onClick="function1(),function2()" type="button" value="display" />

     you can call like this

   or
  <input name="b1" onClick="callAllFunctions();" type="button" value="display" />

function callAllFunctions(){
  function1();
  function2();
}
于 2013-03-18T13:30:15.267 に答える
1

入力パラメーターを使用して、フォームに依存しない関数を定義します。次に、そのパラメーターを各関数に渡し、必要に応じて結果を表示します。

<script type="text/javascript">
function isLeap(yr) {
    if ((parseInt(yr) % 4) == 0) {
        if (parseInt(yr) % 100 == 0) {
            if (parseInt(yr) % 400 != 0) {
                return "false";
            }
            if (parseInt(yr) % 400 == 0) {
                return "true";
            }
        }
        if (parseInt(yr) % 100 != 0) {
            return "true";
        }
    }
    if ((parseInt(yr) % 4) != 0) {
        return "false";
    }
}

function reverse(year) {
    var b = 0;
    year = parseInt(year);
    while (year > 0) {
        b = b * 10
        b = b + parseInt(year % 10)
        year = parseInt(year / 10)
    }
    return b;
}

function sum(no) {
    var sum = 0;
    while (no > 0) {
        sum = sum + no % 10;
        no = Math.floor(no / 10);
    }
    return sum;
}

function outputData() {
    var year = form.year.value;
    alert("Is leap: " + isLeap(year));
    alert("Reversed: " + reverse(year));
    alert("Sum: " + sum(year));
}
</script>

<form name="form">
    Enter a Number:<input name="year" type="text" />
    <input name="b1" onClick="outputData();" type="button" value="display" />
</form>
于 2013-03-18T13:44:11.663 に答える
1

このようなもの。これはほんの一例です...

<input type="text" name="year" id="year" value="" />
<input type="button" name="process" value="processYear" id="proc" onclick="process()"/>


<script>
function isLeap(val)
{   
    if (val % 4 ==0 && ((val % 100 ==0 && val % 400 ==0) || (val % 100 !=0)))
    {
        console.log("Leap...");
        return true;
    }
    else
    {
        console.log("Not Leep...");
        return false;
    }
}

function _revers(val)
{
    _val = val+"";
    return _val.split("").reverse().join("");
}

function sum(val)
{
    _val = val+"";
    return _val.split("").reduce(function(previousValue, currentValue){
                return currentValue + parseInt(previousValue);
            })
}

function diff(val)
{
    return (new Date()).getFullYear() - val;
}

function process()
{
    val = parseInt(document.getElementById("year").value)|0;
    isLeap(val);
    console.log('reverse:', _revers(val));
    console.log('sum:', sum(val));
    console.log('diff:', diff(val));
}

于 2013-03-18T14:06:59.167 に答える
1

他の各関数を呼び出す 1 つの関数を作成し、それをフォームの onclick 関数として設定するだけです。

function processData(){
    function1();
    function2();
    function3();

}

<input name="b1" onClick="processData();" type="button" value="display" />

PSR が提案するように、さまざまな関数呼び出しをコンマで区切ることもできますが、マークアップを比較的きれいに保ち、マークアップを直接編集したり、追加し続けたりすることなく、必要に応じてスクリプト内のロジックを変更できるため、この結果の方が優れていると思います。必要に応じて機能します。この方法で、必要に応じて、ある関数の結果を別の関数に直接渡すこともできます。

于 2013-03-18T13:33:31.903 に答える