用for循环来输出mystr中o的位置,但是每循环一次,就输出一次,只想要两个结果怎么办?

来源:7-8 返回指定的字符串首次出现的位置

大块吃肉188

2016-08-10 15:49

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>string对象</title>
<script type="text/javascript">
var mystr="hello world";
document.write(mystr.indexOf("o")+"<br/>");

for (var i = 0; i < mystr.length; i++) {
document.write("字母o的位置是"+mystr.indexOf("o",i)+"<br/>");
}
</script>
</head>
<body>

</body>
</html>

输出的结果是

4
字母o的位置是4
字母o的位置是4
字母o的位置是4
字母o的位置是4
字母o的位置是4
字母o的位置是7
字母o的位置是7
字母o的位置是7
字母o的位置是-1
字母o的位置是-1
字母o的位置是-1

这个mystr中只有两个o,能不能只输出4,7不要重复这么多

写回答 关注

8回答

  • 慕哥2850875
    2016-08-10 17:16:44
    已采纳

    加了个判断

    <!DOCTYPE html>
    <html>
    <head>
       <meta charset="UTF-8">
       <title>string对象</title>
       <script type="text/javascript">
           var mystr="hello world oasdhihisdpoaisjdhoasjdoiajs";
           document.write(mystr.indexOf("o")+"<br/>");
           var j;
           for (var i = 0; i < mystr.length; i++) {
               if(j!=mystr.indexOf("o",i)){
                   j=mystr.indexOf("o",i);
                   if(j==-1){
                       break;
                   }
                   document.write("字母o的位置是"+mystr.indexOf("o",i)+"<br/>");
                   i=j;
               }
           }
       </script>
    </head>
    <body>
    </body>
    </html>

    宝慕林817... 回复大块吃肉18...

    朋友,我想问下为什么只打印一次,i=0打印,i等于的是if应该也是成立的,怎么不打印出来啊

    2016-08-27 21:12:41

    共 3 条回复 >

  • 我要冲钱
    2016-11-16 08:01:11

    indexOf("0");

    indexOf("0",indexOf("0")+1)

    用这个有起效哦

  • qq_士元_03967658
    2016-11-14 12:41:09

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>string对象 </title>
    <script type="text/javascript">
      var mystr="I love JavaoScript!";

                
    for(var j=0;j<mystr.length;j++){

          if(mystr.charAt(j)=="o"){
         
          document.write(mystr.indexOf("o",j)+"<br/>");break;
       
          }
    }

    for(var j=mystr.indexOf("o",j)+1;j<mystr.length;j++){

          if(mystr.charAt(j)=="o"){
         
          document.write(mystr.indexOf("o",j)+"<br/>");break;
       
          }
    }

             
             
    </script>
    </head>
    <body>
    </body>
    </html>

    之前的那个你有了,看看这个另一种方法

  • qq_士元_03967658
    2016-11-14 12:37:26

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>string对象 </title>
    <script type="text/javascript">
      var mystr="I love JavaoScript!";
    for(var i=0;i<mystr.length;i++){
    if(mystr.charAt(i)=="o"){ document.write(mystr.indexOf("o",i)+"<br/>");}  
    }
    </script>
    </head>
    <body>
    </body>
    </html>

    这个是最简便的,希望你可以采纳


  • 天街小宇
    2016-08-22 19:49:24

    document.write(mystr.indexOf('o',(mystr.indexOf('o',0)+1)));抱歉刚刚的是错的

    慕村1994...

    我验证了下,你的这个好像是错的,只能显示7;我是这样写的: document.write(mystr.indexOf("o")+","+mystr.indexOf("o",mystr.indexOf("o")+1)+"<br>");

    2016-09-18 19:01:42

    共 1 条回复 >

  • 天街小宇
    2016-08-22 19:45:58

    document.write(mystr.indexOf('o',0)+mystr.indexOf('o',mystr.indexOf('o',0)));

  • lexcareful
    2016-08-10 16:05:13

    只能说加判断

  • 慕粉3788046
    2016-08-10 16:00:23

    你这肯定输出这么多啊,不用for循环就行了。实在想用,得加if判断,不过很麻烦。

    顺便问一下这是哪个编辑器?

    大块吃肉18...

    好的谢谢你,我用的是subline

    2016-08-14 09:40:16

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题