Javascript替换未定义错误显示!
朋友们,我取得了相当大的成功,但在替换时出现了一个未定义的错误: 这是我的新代码:Javascript替换未定义错误显示!,javascript,html,replace,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 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();
var avidno='(800)123 1234';
var bodytext=document.body.innerHTML;
函数验证(){
var regex=/^\(?([0-9]{3})\)?[-.]([0-9]{3})[-.]?([0-9]{4})$/gi;
if(正则表达式测试(avidno)){
警惕(“宾果”);
var altrstr=''+avidno+'';
//var newaltr=bodytext.replace(avidno,altrstr);
//var str_count=bodytext.match(avidno).length;//4匹配
document.body.innerHTML=newaltr;
警报(avidno.长度);
find_count=avidno.length;
对于(var i=0;i而言,未定义的错误由此行引起:
document.body.innerHTML = newaltr;
var newaltr = bodytext.replace(avidno, altrstr);
newaltr尚未定义,但您正在尝试使用它设置正文的innerHTML。还需要解决其他问题。例如,此行:
document.body.innerHTML = newaltr;
var newaltr = bodytext.replace(avidno, altrstr);
每次通过循环时,都会覆盖newaltr的上一个值。如果您试图追加(我不确定),则正确的语法是:
newaltr += bodytext.replace(avidno, altrstr);
编辑
正如我和其他人在文章中提到的,你的逻辑有几个问题。除了逻辑问题之外,我认为你的方法是错误的。看看下面的问题(实际上,标记为答案的回答),它应该会让你指向正确的方向
在创建变量之前,您正在使用变量newaltr
代码的另一个问题是,您在循环中进行替换,但是您在一个变量上进行替换,并将结果存储在另一个变量中。您将始终在原始变量上进行替换,因此只使用最后一个替换
您正在使用avidno
中字符串的长度来确定要进行多少替换,这似乎不符合逻辑。这可能意味着bodytext
(因此document.body.innerHTML
)未定义。请确保在加载文档时运行代码。提供准确的错误消息也不会出错…我根据您的观点更改代码,但现在未定义的错误已结束,但它再次替换一次而不是多次:您可能还希望将=+
编辑为+=
(我希望是一个诚实的打字错误)