加入while()

时间:2013-02-28 08:14:45

标签: javascript jquery

这是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个keyup,是的,它添加了,但是下一个keyup(第141个),依此类推'c'回到它的值由notihng添加。如何正确地做到这一点?

感谢。

1 个答案:

答案 0 :(得分:2)

我不能确定我是否正确地阅读了这个问题,但如果my jsfiddle of your code是近似的,那么解决方案可能就像摆脱var前面的c一样简单。添加a+b时{1}}。如果您希望c具有持久值,则需要将其范围置于keyup事件处理程序之外。

来自小提琴:

$(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消息的总字符数。 updated 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保存一些需要在每个页面上显示的文本。如果是相反的方式,或者此代码还有其他用途,请告诉我。