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

Я реализую функцию тегов на веб-сайте, и мне нужно получить значение отдельных тегов (в данном случае "foo", "bar," baz ") с помощью jQuery для отправки в базу данных. По каким-то причинам я застрял с этой проблемой, даже если это не так уж сложно…

Добавление тега через поле ввода создает новый <span class = "tagval"> внутри <span class = "tag"> внутри <div id = "tags_tagsinput">.

Мне нужно получить значение промежутков "tagval", но я не могу этого добиться даже при тщательном исследовании этой темы.

Вот фрагмент HTML:

var tagValue = $(".tagval").html();
console.info("tagValue is:" + tagValue);
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id = "tags_tagsinput" class = "tagsinput">
  <span class = "tag">
    <span class = "tagval">foo</span>
    <span class = "tagval">bar</span>
    <span class = "tagval">baz</span>
  </span>
</div>

Единственный результат, который я всегда получал с .value или .text, - это "undefined" ... Было бы здорово получить вашу поддержку по этому поводу :)

Просто используйте text(). Нам нужно увидеть ваш код, чтобы сказать вам, где ваша проблема, хотя

Rory McCrossan 16.08.2018 09:30

«Сильное исследование» = stackoverflow.com/questions/3567835/…

Carsten Løvbo Andersen 16.08.2018 09:31

Да, спасибо ... Но даже при использовании text () или html () возвращается либо пустое, либо неопределенное значение, когда это делается так: var tagValue = $(".tagval").html(); console.info("tagValue is:" + tagValue);

bengraf 16.08.2018 09:39

@bengraf вы поместили код в обработчик события загрузки, например $(document).ready()?

Mark Baijens 16.08.2018 09:42

@bengraf то, что вы показали, работает, если вы запускаете его, когда DOM готов, как и должно быть.

Rory McCrossan 16.08.2018 09:42

Спасибо за вашу огромную поддержку! Вы совершенно правы с $ (document) .ready ()…

bengraf 16.08.2018 09:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
6
363
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Здесь можно сделать с помощью javascript / jquery

<script>
    var spans = document.querySelectorAll('span.tagval');
    spans.forEach(function(span){
    console.info(span.innerText)
})
</script>

Помните, что querySelectorAll().forEach() не будет работать в IE

Rory McCrossan 16.08.2018 09:36

В этом ответе нет jQuery. Вы также должны попытаться правильно отформатировать код, особенно когда публикуете ответы, чтобы их могли прочитать другие.

CertainPerformance 16.08.2018 09:38
Ответ принят как подходящий

Вам, вероятно, понадобится обработчик загрузки и цикл each. Это работает вот так.

$(document).ready(function(){
  $(".tagval").each(function(){
    var tagValue = $(this).text();
    console.info("tagValue is:" + tagValue);
  });
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "tags_tagsinput" class = "tagsinput">
  <span class = "tag">
    <span class = "tagval">foo</span>
    <span class = "tagval">bar</span>
    <span class = "tagval">baz</span>
  </span>
</div>

Пока работает! Большое спасибо!

bengraf 16.08.2018 09:51

Это должно работать:

$('.tag .tagval').text();

ПЫТАТЬСЯ

$(document).on('mouseover', '.tagval', function () {
    var spanVal=$(this).val()
    alert(spanVal);
    });

Попробуй это:-

Используйте метод .text(), чтобы получить text внутри элемента span.

var spanval=$('.tagval').text();
console.info(spanval);
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "tags_tagsinput" class = "tagsinput">
  <span class = "tag">
    <span class = "tagval">foo</span>
    <span class = "tagval">bar</span>
    <span class = "tagval">baz</span>
  </span>
</div>

Ваш первый пример не имеет особого смысла, поскольку он в основном делает то, что делает ваш второй пример, с той лишь разницей, что ваш первый пример генерирует 3 пустые переменные.

Carsten Løvbo Andersen 16.08.2018 09:47

Другие вопросы по теме