Javascript替换未定义的错误显示!

时间:2011-06-20 12:07:36

标签: javascript html replace

朋友我取得了相当大的成功,但在替换时出现了一个未定义的错误:

这是我的新代码:

var avidno = '(800)123 1234';
var bodytext = document.body.innerHTML;
function validate () {
var regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/gi;

if (regex.test(avidno)) {
    alert('bingo');
    var altrstr = '<span>'+avidno+'</span>';
    //var newaltr = bodytext.replace(avidno, altrstr);
    //var str_count = bodytext.match(avidno).length;  //4 matched

    document.body.innerHTML = newaltr;
    alert(avidno.length);
    find_count = avidno.length;
    for(var i=0;i<find_count;i++)
    {
      var newaltr = bodytext.replace(avidno, altrstr);
    }

    // Valid international phone number
} else {
    alert('uupss');
    // Invalid international phone number
}
}
validate();

2 个答案:

答案 0 :(得分:2)

您在创建之前使用了变量newaltr

代码的另一个问题是你在循环中进行替换,但是你在一个变量上执行它并将结果存储在另一个变量中。您将始终在原件上进行更换,因此仅使用最后一次更换。

您正在使用avidno中字符串的长度来确定要执行的替换次数,这似乎不符合逻辑。

答案 1 :(得分:0)

未定义的错误是由以下行引起的:

document.body.innerHTML = newaltr;

newaltr 尚未定义,但您尝试使用它设置body的innerHTML。还有其他问题需要解决。例如,这一行:

var newaltr = bodytext.replace(avidno, altrstr);

每次进行循环时,都会覆盖newaltr的先前值。如果你试图追加(我不确定),那么正确的语法是:

newaltr += bodytext.replace(avidno, altrstr);

修改

正如我的帖子和其他人所提到的,你的逻辑有几个问题。除了逻辑问题,我认为你的方法是不正确的。看看下面的问题(实际上,标记为答案的响应),它应该让你指向正确的方向。

https://stackoverflow.com/questions/1444409/in-javascript-how-can-i-replace-text-in...