Javascript заменить неопределенные ошибки показывает! - PullRequest
0 голосов
/ 20 июня 2011

Друзья, я добился некоторого успеха, но при замене через неопределенную ошибку:

вот мой новый код:

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 ]

2 голосов
/ 20 июня 2011

Вы используете varaible newaltr перед его созданием.

Другая проблема с кодом заключается в том, что вы делаете замены в цикле, но вы делаете это для одной переменной и сохраняете результат вдругая переменная.Вы всегда будете выполнять замену оригинала, поэтому используется только последняя замена.

Вы используете длину строки в avidno для определения количества замен, что не представляется логичным..

0 голосов
/ 20 июня 2011

Неопределенная ошибка вызвана этой строкой:

document.body.innerHTML = newaltr;

newaltr еще не определено, но вы пытаетесь установить innerHTML тела вместе с ним. Есть и другие проблемы, которые также необходимо решить. Например, эта строка:

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

Каждый раз, когда вы проходите цикл, вы перезаписываете предыдущее значение newaltr. Если вы пытаетесь добавить (я не уверен), то правильный синтаксис:

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

EDIT

Как упоминалось в моем и других постах, у вас есть несколько проблем с вашей логикой. В дополнение к вопросам логики, я думаю, что ваш подход неверен. Посмотрите на вопрос ниже (на самом деле ответ, помеченный как ответ), он должен направить вас в правильном направлении.

/1239597/v-javascript-kak-ya-mogu-zamenit-tekst-na-stranitse-html-ne-zatragivaya-tegi...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...