-1
<!DOCTYPE html>
<html>
<head>
<title>input number</title>
</head>
<body>

enter no:1<input id="t1" type="text"><br>

<button type="button" onClick="myFunction()">submit</button>
<button type="button" onClick="myFunction()">next</button>

<div id="div1" style="color:#0000FF">
</div>

<script>
function myFunction(){

var no=document.getElementById("t1").value;

if(no==""||isNaN(no))
{
    alert("Not Numeric");
}

else{

    if(no!=1){

        if(no%2==0){

        no=no/2;
    }
    if (no%2!=0) {

        no=(no*3)+1;
    }
}
}


document.getElementById("div1").innerHTML = no;
}

</script>

</body>
</html>

送信ボタンを押したときにテキストボックスに数字を入力すると、次の出力が表示されます

no:1 を入力してください 次の 16
を送信してください

しかし、次のボタンを押しても出力が表示されません。次のボタンを押すと、次の番号が表示されるはずです。myFunction() function.Helpme でロジックを実行することにより...

4

3 に答える 3

1

no = 1 の場合のケースを設定していません。no != 1 の場合と no%2 != 0 の場合のケースがあります。どちらも no = 1 の場合は false です。ここにはインクリメント ロジックはありません。次の番号を見つけて返します。no%2==0句の最後に } がないと思います。

また、ここに 2 つの同一のボタンがあり、次と送信が同じことを行う理由がわかりません。さらに、よりわかりやすい ID をお勧めします。div1 は div の適切な名前ではありません。

于 2013-09-01T16:54:48.373 に答える
0

いくつかの基本的な HTML の問題もあります。投稿では、input タグを次のように使用しています。

<input id="t1" type="text">次のように使用します。<input id="t1" type="text" />

第二に、関数にデータを送信すると、そこに何らかの価値があります! 値は 1 かもしれませんし、16 かもしれません。ただし、再送信しようとすると、許可されていないか、入力が空のフィールドになっています。したがって、関数はこのステップより先には実行されません。

if(no==""||isNaN(no))

値をフォームに保存してみてください。

これを使用してみてください:

document.getElementById("t1").value = no;

コードが値を他の形式に変更しているため、値がそのままキャプチャされていることを確認してください。これには新しい変数を使用してください。これにより、入力から値が保存され、再びその入力に書き戻されます。

これにより、関数の前のテキスト入力の値が設定されます。これにより、入力が再び送信の準備が整う可能性があります。

于 2013-09-01T17:23:44.233 に答える
0

意図がコラッツ予想を実装することである場合、javascript 部分は次のようになります。http://en.wikipedia.org/wiki/Collat​​z_conjecture

function myFunction(){
    var no=document.getElementById("t1").value;

    if(no==""||isNaN(no)) {
        alert("Not Numeric");
    } else {
        if(no!=1) {
            if(no%2==0) {
                no=no/2;      // Note the division operator instead of mod
            } else {
                no=(no*3)+1;
            }
        }
    }
    document.getElementById("t1").value = no; // Note that we are writing to the textbox
}
于 2013-09-01T17:03:52.630 に答える