2010-10-27 1 views
0

У меня есть HTML, который имеет много следующего:Javascript букмарклета, поиск регулярного выражения, заменить HTML ссылку динамически

<TD CLASS="broke"> - WF-1234567 - </TD> 
<TD CLASS="broke"> - WF-1111111 - </TD> 
<TD CLASS="broke"> - WF-7654321 - </TD> 

Я хочу сделать яваскрипт букмарклета, чтобы заменить все 7-значные номера с гиперссылкой. Как это сделать?

Моя попытка со многими вещами неправильным ....

javascript: 
var match=new RegExp("(- WF-....... - Review)","ig"); 
var x = document.getElementsByClassName("broke").innerHTML; 
x=x.replace(match,<a href="www.blah.com/"+7digitSubsetofMatch>7digitlink</a>); 
document.getElementsByClassName("browseItemLocation").innerHTML=x; 
+0

/WF - (\ d {7})/номер будет в $ 1 http://www.javascriptkit.com/jsref/regexp.shtml – mplungjan

ответ

1

getElementsByClassName возвращает список, а не один элемент с innerHTML доступны. вам придется перебирать список и обрабатывать каждый элемент отдельно.

javascript:(function(){ 

var elements = document.getElementsByClassName("broke"); 

for (var j = 0; j < elements.length; j++) { 

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

var pattern = new RegExp("WF-(\\d+)", "ig"); 
    var match = elements[j].innerHTML.match(pattern); 

если вы имели успешный матч, то match[0] будет вся строка соответствует и match[1] будут цифры

вы не можете писать буквальный html в javascript - он должен быть строкой.

var x = elements[j].innerHTML.replace(match[1], 
     '<a href="www.blah.com/' + match[1] + '">' + match[1] + '</a>'); 

тогда вы cna замените свой оригинальный html.

elements[j].innerHTML = x; 
} 

})() 

Я не знаю, что делает ваша последняя строка, но это кажется ненужным.

+0

Хороший ответ Халк Хоган – Drew