将 DOM 元素内容存储在变量中,并用它更新相同的 DOM 元素
Store DOM element content in variable, and update the same DOM element with it
给定以下 DOM 元素:
<span class=itemNumber>10</span>
我想将数字存储在变量中,将其转换为整数,向其加 1,然后在 DOM 中更新它。
我尝试使用这个函数来做到这一点,绑定到一个点击事件:
var itemCount = parseInt($('.itemNumber').text())+1;
$('.itemNumber').html(itemCount);
看起来很简单,但结果不是我所期望的。它不是用"11"替换旧的"10"数字,而是显示"1011"。我尝试在 .html(( 之前使用 .empty(( 函数,但结果相同。
我怀疑变量实际上并没有存储数字,而是对元素的引用。
有什么想法吗?
你的代码看起来完全有效。但这是文本(func(语法的典型用法。
$('.itemNumber').click(function() {
$(this).text(function (_, val) {
return +val + 1;
});
});
演示
您的问题可能是您有超过 1 个,.itemnumber
并且在处理程序中不使用 $(this)
可能会导致同时选择两者。 $('.itemNumber').text()
会给你两个数字一起(它们的两个内部文本(说1010
它会增加1
,你会得到的结果是1011
而不是11
。
在这里看到小提琴 http://jsfiddle.net/a4ry4/
因此,您的解决方法是在处理程序中单独使用单击的实例来选择文本。
var itemCount = parseInt($(this).text(), 10)+1;
$(this).html(itemCount);
.text
函数可以采用突变函数:
$('.itemNumber').text(function(_, txt) {
return parseInt(txt, 10) + 1;
});
您可能希望在将 itemCount 转换为字符串之前将其用作项目的文本。
$('.itemNumber').text(itemCount.toString());
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素