朋友,我取得了一些成功,但在替换过程中出现了未定义的错误:

这是我的新代码:

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();

最佳答案

创建变量之前,您正在使用变量newaltr

该代码的另一个问题是,您要在循环中进行替换,但是要对一个变量进行替换,然后将结果存储在另一个变量中。您将始终在原始文件上进行替换,因此仅使用最后一个替换文件。

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

08-25 16:26