Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2018, 13:53
Интересующийся
Отправить личное сообщение для Le7o Посмотреть профиль Найти все сообщения от Le7o
 
Регистрация: 08.04.2011
Сообщений: 26

Как извлечь class и id из строки?
Есть строка вида:
tag.class1.class2.class3#id

Как эту строку можно превратить в нечто вида:
<tag class="class1 class2 class3" id="id"></tag>

Последний раз редактировалось Le7o, 24.04.2018 в 14:11.
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2018, 14:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Le7o
class3
где?
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2018, 14:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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);
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2018, 14:23
Интересующийся
Отправить личное сообщение для Le7o Посмотреть профиль Найти все сообщения от Le7o
 
Регистрация: 08.04.2011
Сообщений: 26

Сообщение от j0hnik Посмотреть сообщение
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 может быть в начале строки сразу после тега
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2018, 14:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

может не быть и tag.
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2018, 14:37
Интересующийся
Отправить личное сообщение для Le7o Посмотреть профиль Найти все сообщения от Le7o
 
Регистрация: 08.04.2011
Сообщений: 26

Сообщение от рони Посмотреть сообщение
может не быть и tag.
tag будет в любом случае.
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2018, 14:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

/google create element by css selector

https://gist.github.com/Couto/3637328
https://github.com/hekigan/dom-create-element-query-selector/
__________________
29375, 35

Последний раз редактировалось Aetae, 24.04.2018 в 14:42.
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2018, 14:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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))
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2018, 15:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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));

Последний раз редактировалось Dilettante_Pro, 24.04.2018 в 15:57.
Ответить с цитированием
  #10 (permalink)  
Старый 24.04.2018, 17:15
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,004

Сообщение от Le7o Посмотреть сообщение
Спасибо, так уже пробовал, вся проблема в том что эта строка динамическая:
1. может не быть классов
2. может не быть id
3. id может быть в начале строки сразу после тега
наиболее острые вопросы такие:
1) может ли быть невалидный селектор
2) могут ли быть селекторы по атрибутам, с произвольными значениями.
3) селектор строго одиночный, или может оказаться что-то вроде "div span" или "div, span" ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить состоит ли строки только из пробелов Telnet Общие вопросы Javascript 6 19.11.2020 19:52
Как извлечь текст который появляется после нажатия кнопки? olta78 Общие вопросы Javascript 2 26.05.2017 14:43
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как получить src img, у которого нет ни id, ни name, ни class viktor073 Events/DOM/Window 12 23.01.2014 12:23
datatables как добавить в таблицу данных не перерисовывая строки? Kenuat jQuery 0 02.12.2013 17:14