当前位置:编程学习 > JS >>

从文本框输入一个字符串 要求显示各个字符有多少个?JAVASCRIPT

<html>
 <head>
  <script>
   function f(){
    var str=document.myform.n1.value;
    var i=1;
    for(var a=0;a<=(str.length-1);a++)
    {
     var sb=str.charAt(a);
     i =1;
     for(var b=1+a;b<=(str.length-1);b++)
     {
      var sc=str.charAt(b);
      if(sb==sc){i++};
      i=i;
     }
      alert(sb);
      alert(i);
      
     }
    }
  </script> 
  </head>
  <body>
   <form action="" name="myform">
    <input type="text" name="n1">
    <input type="button" name="n2" value="确认" onclick="f()">
   </form>
  </body>
</html>

这是小弟的代码 ~~~例如输入abcd  就行  输入abcdab   显示a 2 b 2 c 1 d 1 a 1 b1

重复的会继续显示

老师说要加个变量存放次数    本人初学  希望各位大神解决下

答案:给你个函数,传入字符串调用吧:

function showEachCharCount(str) {       
    var chars = new Array();
    var rlt = new Array();
    for(var i=0; i<str.length; i++) {   
        var isFound = false;
        for(var j=0; j<chars.length; j++) {
            if(str.charAt(i) == chars[j]) {
                rlt[j] ++;
                isFound = true;
                break;
            }
        }
       
        if(isFound)
            continue;
       
        chars[chars.length] = str.charAt(i);
        rlt[rlt.length] = 1;
    }
   
    var msg = "";
    for(var k=0; k<chars.length; k++) {
        msg += chars[k] + ":" + rlt[k] + "\n";
    }
   
    alert(msg);
}

for(var b=1+a;b<=(str.length-1);b++)//看看你这段代码 你是要在前面的选出一个字符 然后跟后面的比较 这样对相同的字符进行累加 但是你忘了排除掉相同的这个啊 这必然会出现a2a1这种情况,想办法让重复的去掉就行了

JS过程如下:

 

function f() {
  var str = document.myform.n1.value;
  var temp = '';//存储已统计过的字符
  for (var a = 0; a <= (str.length - 1); a++) {
      var sb = str.charAt(a);
      //判断是否已经统计过的字符
      if (temp.indexOf(sb) < 0) {
          var arr = str.split(sb);
          alert(sb + ':' + (arr.length - 1));
          temp += sb;
      }
  }
}

上一个:javascript中的for in 循环跟for 循环到底有什么区别啊?
下一个:如何在客户端用javascript 遍历服务器端发来的json结构的数据

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,