情况一:var sjsxStr;
for (var i=0; i<iNbPrompts; i++)
{........
  sjsxStr=arrLovTexts[i];
}
alert(sjsxStr);
if(sjsxStr.indexOf("天"))
{
 .........
}运行结果:弹出提示“年季月天”,“if(sjsxStr.indexOf("天"))”行报错:Error:对象不支持此属性或方法情况二:var sjsxStr;
for (var i=0; i<iNbPrompts; i++)
{........
  sjsxStr+=arrLovTexts[i];                  //修改了这个地方 加个"+"
}
alert(sjsxStr);
if(sjsxStr.indexOf("天"))
{
 .........
}运行结果:弹出提示“undefined年季月天”,程序正常了。
这是为什么呢?

解决方案 »

  1.   

    sjsxStr没有初始值,所以就这样了
      

  2.   

    很可能数据类型有问题...
    var d;
    d=10;     //数值型
    d=d+" ";  //通过跟一个空格相加变成字符串型obj.indexOf(参数) 函数对字符串应用比较好
      

  3.   

    try:
    var sjsxStr;
    for (var i=0; i<iNbPrompts; i++)
    {........
      sjsxStr=arrLovTexts[i];
    }
    alert(sjsxStr);
    if(sjsxStr.toString().indexOf("天"))
    {
     .........
    }
      

  4.   

    因为sjsxStr是先加,而sjsxStr又没有初始值,所以undefined过程是这样的sjsxStr=sjsxStr+arrLovTexts[i];//因为不知道sjsxStr是什么值所以sjsxStr=undefined+arrLovTexts[i];
      

  5.   


    <script type="text/javascript">
    var a;//申明变量未初始化的时候默认为undefined
    alert(a);
    a += 'A';//undefined+'A';
    alert(a);
    </script>
      

  6.   

    按照lihui_shine 的回复
    改成:try: JScript codevar sjsxStr;
    for (var i=0; i<iNbPrompts; i++)
    {........
      sjsxStr=arrLovTexts[i].toString();
    }
    alert(sjsxStr);
    if(sjsxStr.indexOf("天"))
    {
     .........
    }  可以了