1

HTMLは次のとおりです。

<form>
   <textarea id="input1"></textarea>
   <textarea id="input2"></textarea>
   <span></span>
</form>

js:

$("#input2").keyup{
 var a = document.getElementById("input1").length;
 var b = document.getElementById("input2").length;
 var c=a+b;
  $("span").html(c);
}

「c」が140の倍数に達するたびに、「b」で追加する必要があります。これを実行しようとしました。

while(c%140 == 0){
   c=c+b;
}

140番目のキーアップでは、はい、追加されますが、次のキーアップ(141番目)など、「c」は、notihngによって追加された値に戻ります。これを正しく行う方法は?

ありがとう。

4

1 に答える 1

2

この質問を正しく読んでいるかどうかはわかりませんが、コードのjsfiddleが近似値である場合、ソリューションは、を追加するときvarに前を削除するのと同じくらい簡単かもしれません。永続的な値が必要な場合は、そのスコープがイベントハンドラーの外部にある必要があります。ca+bckeyup

フィドルから:

$(function() {
   var c = 0;

   $("#input2").keyup( function() {
       var a = $("#input1").val().length;
       var b = $("#input2").val().length;
       c=a+b;
       if(c%140 == 0){
           c=c+b;
       }
       $("span").html(b);
   });

});

ifこれは、ではなく、であることに注意してくださいwhile。whileループであると想定される場合、それは簡単に変更できます。

アップデート

私はここで何が起こっているのか考えていると思います。複数ページのSMSメッセージの合計文字数を追跡する必要があります。更新されたjsfiddleには、出てきて尋ねるだけではない質問に対する答えがあります。

新しいコードは次のとおりです。

$(function() {

  $("#input2, #input1").keyup( function() {
    var a = $("#input1").val().length;
    var b = $("#input2").val().length;
    c=a+b;

    c+=Math.floor(c/140)*b;

    $("span").html(c); 
  });

});

もちろん、これは、input1が実際のメッセージを保持し、input2が各ページに表示する必要のあるテキストを保持していることを前提としています。それが逆の場合、またはこのコードに他の目的がある場合は、私に知らせてください。

于 2013-02-28T08:27:58.297 に答える