Как извлечь 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:53. |