Я реализую функцию тегов на веб-сайте, и мне нужно получить значение отдельных тегов (в данном случае "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" ... Было бы здорово получить вашу поддержку по этому поводу :)
«Сильное исследование» = stackoverflow.com/questions/3567835/…
Да, спасибо ... Но даже при использовании text () или html () возвращается либо пустое, либо неопределенное значение, когда это делается так: var tagValue = $(".tagval").html(); console.info("tagValue is:" + tagValue);
@bengraf вы поместили код в обработчик события загрузки, например $(document).ready()?
@bengraf то, что вы показали, работает, если вы запускаете его, когда DOM готов, как и должно быть.
Спасибо за вашу огромную поддержку! Вы совершенно правы с $ (document) .ready ()…



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Здесь можно сделать с помощью javascript / jquery
<script>
var spans = document.querySelectorAll('span.tagval');
spans.forEach(function(span){
console.info(span.innerText)
})
</script>
Помните, что querySelectorAll().forEach() не будет работать в IE
В этом ответе нет jQuery. Вы также должны попытаться правильно отформатировать код, особенно когда публикуете ответы, чтобы их могли прочитать другие.
Вам, вероятно, понадобится обработчик загрузки и цикл 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>Пока работает! Большое спасибо!
Это должно работать:
$('.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 пустые переменные.
Просто используйте
text(). Нам нужно увидеть ваш код, чтобы сказать вам, где ваша проблема, хотя