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

为什么会重复检索同一个字符串呢?

<!DOCTYPE html>

<html>

 <head>

  <title> 事件</title>  

  <script type="text/javascript">

 var str="hello world!ol ol ol ol ol olc"


 var con=0;

 for(i=0;i<7;i++){

      cin=str.indexOf("o",con);

 if(con!=str.length-1){

      con=con+1;

 }

 else{break;}

 document.write(cin);

 }


</script>

 </body>

</html>


正在回答

5 回答

把  con=con+1改成con=cin+1就行了

1 回复 有任何疑惑可以回复我~
<!DOCTYPE html>
<html>
 <head>
  <title> 事件</title>  
  <script type="text/javascript">
	 var str="hello world!ol ol ol ol ol olc"
	 var cin;
	 var con=0;
	 for(i=0;i<7;i++){
		  cin=str.indexOf("o",con);
	 if(con!=str.length-1){
		  con=con+1;
	 }
	 else{break;}
	 }
	document.write(cin);
</script>
 </body>
</html>


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

for循环里面从0开始检索,检索到第一个o在4,输出4,满足不等于检索值的条件,0+1从1开始找,又找到o在4,输出4,还是不满足等于检索值的条件,1+1从2开始找,一直到con=5开始找下一个,找到o在7,输出7,满足不等于检索值的条件,5+1从6开始找,找到o在7,输出7,6+1=7不满足for语句里面的i<7的条件,循环结束。

电脑要是知道你怎么想的一定会说:妈的智障

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

作孽的赌徒_

所以输出是4444477
2017-09-16 回复 有任何疑惑可以回复我~
#2

作孽的赌徒_

想改正其实很简单,把document.write(sin)放到循环外面就行了,输出的值就是7了
2017-09-16 回复 有任何疑惑可以回复我~
#3

作孽的赌徒_

而且你这个循环写的是寻找最后一个o的位置,如果你把i<7改成str.length或者str.length-1就会发现输出是-1,改成str.length-2就会发现输出是27.因为str.length 不存在,而str.length-1满足if判断条件里的else,直接就中断了,没有值输出。
2017-09-16 回复 有任何疑惑可以回复我~

想要学习JavaScript, 最好先学习一下JavaSE的基础啊,里面的语法都差不多啊.

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

qq_彼岸花开想念莫离_0 提问者

这样子好吗?
2017-09-10 回复 有任何疑惑可以回复我~

因为你写了循环啊。。。。

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

qq_彼岸花开想念莫离_0 提问者

我意思是一直重复同一个O,不是应该下一个O吗?
2017-09-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么会重复检索同一个字符串呢?

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