Как извлечь class и id из строки?
Есть строка вида:
tag.class1.class2.class3#id Как эту строку можно превратить в нечто вида: <tag class="class1 class2 class3" id="id"></tag> |
Цитата:
|
var arr = 'tag.class1.class2.class3#id'.split(/\.|#/); var str = `<${arr[0]} class="${arr[1]} ${arr[2]} ${arr[3]} id="${arr[4]}"></${arr[0]}>`; alert(str); |
Цитата:
1. может не быть классов 2. может не быть id 3. id может быть в начале строки сразу после тега |
:) может не быть и tag.
|
Цитата:
|
|
Le7o,
var str = "tag.class1.class2.class3#id" function fn(str) { var tag = "div", match, div = document.createElement("div"), elem; if (match = str.match(/^[^.#]+/)) { tag = match[0]; } elem = document.createElement(tag); if (match = str.match(/#([^.#]+)/g)) { elem.id = match[0].slice(1); } if (match = str.match(/\.([^.#]+)/g)) { match.forEach(function(cls) { elem.classList.add(cls.slice(1)); }); } div.appendChild(elem); return div.innerHTML; }; alert(fn(str)) |
var str = 'div.class1#id.class2.class3'; var elem = { 'tag': '', 'class':'', 'id':''}; var flag = 'tag'; for (var i = 0; i < str.length; i++) { if(str[i] == '.') { flag = 'class'; elem[flag] += " "; i++ } if(str[i] == '#') { flag = 'id'; i++ } elem[flag] += str[i]; } alert(JSON.stringify(elem)); |
Цитата:
1) может ли быть невалидный селектор 2) могут ли быть селекторы по атрибутам, с произвольными значениями. 3) селектор строго одиночный, или может оказаться что-то вроде "div span" или "div, span" ? |
Часовой пояс GMT +3, время: 15:32. |