这是一个在URL中定位目标字符串的实例
其中有一处不太明白,
index=MyURL.indexOf(MyStr, index+1);
在此代码中,我想问一下index+1是指哪里呢?或者是指什么呢?
往往读到类似的代码,我就会不太明白<html>
<head>
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
function URLDetect()
{
  //获取文本框内容
  var MyURL=document.MyForm.MyURL.value;
  var MyStr=document.MyForm.MyStr.value;
  //获取字符串长度
  var URLlength=MyURL.length;
  var Strlength=MyStr.length;
  var msg="";
  //判断文本框是否为空,若空,返回错误信息
  if(URLlength==0||Strlength==0)
  {
    msg+="对不起,你的输入有误,文本框不能为空,但可以为空格!";
    alert(msg);
    return;
  }
  //若不空,执行定位操作
  else
  {
    msg+="在URL中定位目标字符串实例:\n\n";
    msg+="原始地址 : " + MyURL + "\n";
    msg+="目标子串 : " + MyStr + "\n\n";
    msg+="定位结果 : \n";
    var index=MyURL.indexOf(MyStr);
    var i=0;
    if(index==-1)
    {
      msg+="目标字符串中没有找到指定的字符串!";
    }
    else
    {
      //搜索到一个位置后,设定标记,然后继续搜索
      while(index!=-1)
      {
        i+=1;
        msg+="位置" +i+ " : " +index+ "\n";
        index=MyURL.indexOf(MyStr, index+1);    
      }
    }
  }
  //输出定位信息
  alert(msg);
  return;
}
-->
</script>
</head>
<body>
<form name=MyForm>
  原始地址: 
  <input type=text name=MyURL size=60><br>
  搜索子串: 
  <input type=text name=MyStr size=60><br><br>
  <center>
    <input type=button value=定位指定字符串 onClick="URLDetect()">
  </center>
</form>
</body>
</html>

解决方案 »

  1.   

    //从下一个位置开始,搜索MyStr
    index=MyURL.indexOf(MyStr, index+1); 
    比如,12345556789,我搜索55
    第一次匹配55是在第5个位置,然后找到1次匹配,再继续找,这个时候就要从第6个位置开始找,所以要+1
      

  2.   

    根据上下文 index是上一次搜到的子串的位置,那么下一次搜索应该是从之后的位置开始,所以是index+1, indexOf()函数的第二个参数表示从哪个位置开始查找.