JS 怪问题 仁兄救命
<script>document.write(f1('C8H16N4O3'))</script> //得到正确结果
<script>document.write(rf1('C8H16N4O3'))</script> //得到空值
function f1(str)
{
var s2=str.match(/[A-Za-z]+\d+[A-Za-z]+/);
//s2同样可以得到"C8H"(左右无空格)可得不到正确结果,如果直接赋值则可以(s2="C8H")
var s1=ref1(s2);
str=str.replace(s2,s1);
return str;
}
function rf1(str)
{
var s1=ref1("C8H");
str=str.replace("C8H",s1);
return str;
}
function ref1(str)
{
var allstr="";
var st=str;
for(var i=0;i<st.length;i++)
{
alert("o"+st+"o");
onechar= st.charAt(i);
alert("o"+onechar+"o");
if (onechar.match(/\d/))
{
allstr+="<sub>"+onechar+"</sub>";
}else
{
allstr+=onechar;
}
}
return allstr;
}
</script>
------解决方案--------------------因为你用的是
document.write(rf1( 'C8H16N4O3 '))
TRY
alert(rf1( 'C8H16N4O3 ')) 肯定有值
------解决方案--------------------onechar= st.charAt(i);
将这句改成
onechar= st.toString().charAt(i);