为了账号安全,请及时绑定邮箱和手机立即绑定

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

<!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 回答

加了个判断

<!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>

0 回复 有任何疑惑可以回复我~
#1

大块吃肉188 提问者

非常感谢!
2016-08-14 回复 有任何疑惑可以回复我~
#2

大块吃肉188 提问者

<script type="text/javascript"> var mystr="hello world oasdhihisdpoaisjdhoasjdoiajs"; for(var i=0;i<mystr.length;i++){ if(mystr.charAt(i)=="o"){ document.write(mystr.indexOf("o",i)+"<br/>"); } } </script> 我发现这样也是可以的
2016-08-14 回复 有任何疑惑可以回复我~
#3

宝慕林8170242 回复 大块吃肉188 提问者

朋友,我想问下为什么只打印一次,i=0打印,i等于的是if应该也是成立的,怎么不打印出来啊
2016-08-27 回复 有任何疑惑可以回复我~

indexOf("0");

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

用这个有起效哦

0 回复 有任何疑惑可以回复我~

<!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>

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

0 回复 有任何疑惑可以回复我~

<!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>

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


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕村1994845

我验证了下,你的这个好像是错的,只能显示7;我是这样写的: document.write(mystr.indexOf("o")+","+mystr.indexOf("o",mystr.indexOf("o")+1)+"<br>");
2016-09-18 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

只能说加判断

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

大块吃肉188 提问者

好的谢谢你,我用的是subline
2016-08-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信