Не обновляется содержимое тегов
У меня на странице есть пару тегов <span> с атрибутом value, и это значение у всех одинаковое. После попытки изменить текст этих тегов текст не изменяется, а прибавляется к текущему, но если будет всего лишь один тег <span> с атрибутом value и каким-то значением, то всё работает как положено, то есть заменяется текст.
Вот код замены текста:
$("span[value='user']").text(Number($("span[value='user']").text()) + 1);
|
<span value = "user">1</span>
<span value = "user">2</span>
<span value = "user">20</span>
<button onclick="changeText();">Change</button>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
function changeText() {
$("span[value='user']").each(function() {
$(this).text(+$(this).text() + 1);
});
}
</script>
|
Dilettante_Pro, всё равно прибавляется новое значение строки к текущей. И да, я забыл упомянуть, что после нажатия на первую кнопку выполняется функция, которая меняет значение полей на +1 и удаляет эту кнопку, при этом добавляет вторую, на которую есть функция. Делает она всё тоже самое, только создаёт первую кнопку и вместо +1 делает -1. В общем, циклический процесс получается.
|
Цитата:
|
laimas, спасибо за указание, забыл про это.
|
Цитата:
В моем примере прибавляются не строки, а УВЕЛИЧИВАЮТСЯ числовые значения - при каждом нажатии на 1. Можно сделать, чтобы менялись туда-сюда.
<span value = "user">1</span>
<span value = "user">2</span>
<span value = "user">20</span>
<button onclick="changeText();">Change</button>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
var delta = 1;
function changeText() {
$("span[value='user']").each(function() {
$(this).text(+$(this).text() + delta);
});
delta = -delta;
}
</script>
|
Dilettante_Pro, не так выразился. В общем, использовав твой пример скрипта и изменив атрибут value на title всё стало работать так, как должно. Спасибо за помощь.
|
Цитата:
<span>5</span>
<span value = "user">1</span>
<script>
alert(document.querySelector("span[value='user']").value);
alert(document.querySelector("span[value='user']").innerText);
</script>
|
Цитата:
|
Цитата:
<span value="user">1</span>У представителя типа Element имеется свойство attributes, геттер, который возвращает объект типа NamedNodeMap, в котором хранятся представленные атрибуты элемента. Хотя согласно спецификации такой атрибут ничего не значит, у него нет никакого значения, и реализация элемента в классе HTMLSpanElement никак его не использует, однако атрибут представлен в DOM, и соответственно должен быть отражён в объекте свойства attributes. Зато вы можете наследовать от HTMLSpanElement, и можете дать смысл такому атрибуту. Вы могли бы использовать атрибут вида data-*, если вам не нужно расширение: в таком случае видно, что это ваш собственный атрибут, и читатели вашего кода не полезут в документацию, чтобы узнать о новом атрибуте! Также вы могли бы создать элемент в пространстве XML, в таком случае вы сами определяете имена и атрибуты и их значение и семантику. Для того, чтобы прочитать конкретный атрибут, также можно воспользоваться методом Element.prototype.getAttribute Почему у элемента типа HTMLInputElement есть геттер/сеттер value? Потому что так определён класс. Геттер/сеттер value делает дополнительные проверки, которые позволяют значение получаемого/устанавливаемого атрибута привести к соответствующему типу. А метод getAttribute прочитает значение из DOM так, как оно определено. |
| Часовой пояс GMT +3, время: 14:55. |