拼接删除JavaScript中的随机元素问题
Splice removing random elements issue in javascript
我正在尝试使用 jQuery 创建交互式购物车,但拼接问题毁了一切,因为当我直接删除元素时,它对我来说非常完美,但比我要动态更改它不起作用即使在更新索引后删除数组中的随机元素。
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<div id="myDIV2"></div>
<div id="myDIV"></div>
<script>
var wishlistArray = ["Item1", "Item2", "Item3", "Item4", "Item5"];
function wishlist_show() {
var wishlistArrayDom = "";
jQuery.each(wishlistArray, function (i, wishlistID) {
wishlistArrayDom += '<div><a href="javascript:;" class="rem-from-wishlist" value="' + i + '">Remove( ' + wishlistID + ' )</a></div>';
});
$('#myDIV').empty();
$('#myDIV').html(wishlistArrayDom);
wishlist_update_rem();
console.log('All: ' + wishlistArray.length);
console.log('Arr: ' + wishlistArray);
}
function wishlist_rem(num) {
console.log('Value: ' + $(this).attr('value'));
console.log('All: ' + wishlistArray.length);
console.log('Arr: ' + wishlistArray);
$(this).parent().slideUp("slow", function () {
console.log(wishlistArray.splice($(this).attr('value'), 1));
wishlist_show();
});
$('#myDIV2').append('<br>Remove ' + wishlistArray[parseInt($(this).attr('value'))] + ' of element' + +$(this).attr('value'));
}
wishlist_show();
function wishlist_update_rem() {
$(".rem-from-wishlist").unbind("click");
$(".rem-from-wishlist").click(wishlist_rem);
}
</script>
Jsfiddle 示例
更新:我自己解决,谢谢大家,堆栈溢出是最好的。
准备使用的 jsfiddle http://jsfiddle.net/ar0zrxwc/
这不是
splice()
的问题,而是您对this
范围的问题。
将您的删除功能更改为:
function wishlist_rem(num) {
var idx = parseInt($(this).attr('value')));
$(this).parent().slideUp("slow", function () {
wishlistArray.splice(idx, 1));
wishlist_show();
});
$('#myDIV2').append('<br>Remove ' + wishlistArray[parseInt($(this).attr('value'))] + ' of element' + +$(this).attr('value'));
}
您的问题是动画回调中的this
是单击的元素的父级,该元素没有值属性。只需在当前记录索引值的同一点定义一个变量即可。
function wishlist_rem(num) {
var index = parseInt( $(this).attr('value'),10);
$(this).parent().slideUp("slow", function () {
console.log(wishlistArray.splice(index, 1));
wishlist_show();
});
$('#myDIV2').append('<br>Remove ' + wishlistArray[parseInt($(this).attr('value'))] + ' of element' + +$(this).attr('value'));
}
演示
相关文章:
- Javascript - 如何按顺序从数组中挑选随机元素
- ReactJS-目标随机元素
- JQuery-随机元素在容器内的绝对位置和旋转
- 如何从JSON中提取n个随机元素
- 使用 javascript 回显数组的 4 个随机元素
- 如何从数组中获取随机元素而不重复并将其放入文本区域
- 使用 jquery 为每几个随机元素添加类
- 为变量分配有限集合中的随机元素
- 选择随机
- 元素
- 拼接删除JavaScript中的随机元素问题
- AngularJS:从JSON文件中获取三个随机元素
- Javascript 或 jQuery 在页面刷新时显示随机元素
- Jasmine中的spyOn函数,该函数从数组中返回随机元素
- 如何使用jquery随机元素排序
- 从javascript中的关联数组中获取随机元素
- 如何从数组中选择随机元素并将其从列表中删除
- 页面上的随机元素
- 从数组中获取随机元素返回相同的元素
- 选择随机元素
- 从redis集合中获得随机元素,没有重复