2013-07-26 5 views
-2

Мне удалось получить весь текст с помощью .innerHTML, код должен соответствовать всем ID, у которых есть шаблон: sens[number] Возможно ли получить номер? Есть ли способ? И, пожалуйста, нет jQuery, спасибо!Идентификатор совпадения JavaScript regex in innerHTML

+1

Что именно вы делаете? получить элементы из некоторых идентификаторов в innerHTML какого-либо элемента? пожалуйста, уточните, покажите, что вы пробовали и т. д. –

ответ

2

Если вы просто пытаетесь получить элементы, которые имеют такой же идентификатор

var elements = document.querySelectorAll('[id^="sens[number]"]'); 

^= будет соответствовать любой идентификатор, начинающийся с сенаторами [число] если число должно быть динамичным

var elements = document.querySelectorAll('[id^=sens]'); 

захватывает все, что начинается с сенсора, или вы можете использовать переменную с селектором, чтобы получить конкретные номера с номером

var number = 1; 
var elements = document.querySelectorAll('[id^=sens"['+number+']"]'); 
2

Преамбула

Не пытайтесь искать элементы из innerHTML строки. Строки трудно разобрать, и DOM позволяет легко находить элементы со специфическими свойствами. При этом сказал:

Общее решение

// grab all elements on the page and setup an array to store matches 
var els = document.getElementByTagName('*'). 
    results = []; 
// iterate over the elements 
for (var i = 0; i < els.length; i++){ 
    // see if the element has an id and, if so, if it matches 
    // the "sens[number]" pattern 
    if (els[i].id && /sens\[\d+\]/.test(els[i].id)){ 
    // found a match, add it to results 
    results.push(els[i]); 
    } 
} 

Современное решение

Конечно, вы также можете использовать querySelectorAll и искать [id^="sens["][id$="]"], но это может быть проблематично на старых браузерах (IE < 8).

var els = document.querySelectorAll('[id^="sens["][id$="]"]'), 
    results = []; 
for (var i = 0; i < els.length; i++){ 
    // all we've found are elements that start with "sens[" and 
    // end with a "]". We still need to verify there's a number 
    // between the brackets ([]) 
    if (/sens\[\d+\]/.test(els[i].id)){ 
    results.push(els[i]); 
    } 
} 
+0

+1 для кросс-браузера :) –

Смежные вопросы