js----数组处理之splice(有js原始addClass方法哦)

本文详细介绍了如何使用传统JavaScript实现DOM类的增加、删除和检查操作,包括使用传统方法替代jQuery中的addClass、removeClass和hasClass方法,并通过实例演示了传统方法的使用方式和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次写了一个轮播的方法:http://blog.youkuaiyun.com/stronglyh/article/details/46833499

因为别人问我的时候,给了我html,于是乎我就看到了页面中引用了jquery,所以就用jquery写了,今天细想了下jquery中有一个addClass方法,不知道传统的js是否可以使用搞定呢。

<html>
<style>
.font_class {
color:#FF0000;
font-weight:bold;
}
</style>


<script language="javascript">
function addClass(cc) {
var obj = document.getElementById('span_1');
var c_class = obj.className;
if(c_class == "") {
obj.className = cc;
} else {
// var reg = /^(.*?)font_1(.*?)$/i;
// new RegExp("(^|\\s)"+className+"(\\s|$)")
var reg = new RegExp("(^|.*?)" + cc + "(.*?)");
if(c_class.match(reg)) {
return;
} else {
c_class += ' ' + cc;
obj.className = c_class;
}
}
}


function removeClass(cc) {
	var obj = document.getElementById('span_1');
	var c_class = obj.className;


	if(c_class == "") {
		return;
	} else {
		var has_c = false;
		var a = c_class.split(" ");
		var l = a.length;
		for(var i=0;i<l;i++) {
	 	  if(a[i] == cc) {
			has_c = true;
			break;
	  	 }
		}
		if(has_c) {
			a.splice(i,1);
			obj.className = a.join(" ");
		}
	}
}
function hasClass(cc) {
var obj = document.getElementById('span_1');
var c_class = obj.className;


var reg = new RegExp("(^|.*?)" + cc + "(.*?)");
if(c_class.match(reg)) {
alert('此class已经存在啦,^_^');
} else {
alert('此class还不存在哦,^_^');
}
}
</script>


<span id="span_1" class="kaishi">o(∩_∩)o...哈哈</span><br />


<input type="button" onclick="addClass('font_class');" value="点我增加class">
<input type="button" onclick="removeClass('font_class');" value="点我删除class">

</html>

其中在删除的时候使用了splice方法

对于这个方法,总共有三个比较常用的用法,详细讲解下:

1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(其实位置),第二个参数(0),第三个参数(插入的项)
3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

var lang = ["php","java","javascript"]; 
//删除 
var removed = lang.splice(1,1); 
alert(lang); //php,javascript 
alert(removed); //java ,返回删除的项 
//插入 
var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入 
alert(insert); //返回空数组 
alert(lang); //asp,php,javascript 
//替换 
var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项 
alert(lang); //asp,c#,ruby 
alert(replace); //php,返回删除的项 
那么现在大家应该知道怎么使用了吧,突然发现还是jquery比较方便啊。


### JavaScript `splice` 方法详解 #### 功能描述 `splice` 是一种用于修改数组的强大方法,它可以在指定位置删除现有元素、添加新元素或将两者结合起来完成复杂的操作。该方法会直接改变原始数组的内容。 #### 基本语法 ```javascript array.splice(start, deleteCount, item1, item2, ...) ``` - **start**: 表示从哪个索引开始执行操作。如果为负数,则表示从数组末尾倒数的位置计算。 - **deleteCount**: 要移除的元素数量。如果设置为 0,则不会删除任何元素[^1]。 - **item1, item2, ...**: 可选参数,表示要向数组中添加的新元素[^1]。 --- #### 删除元素 当仅提供前两个参数时,可以实现从目标位置删除指定数量的元素。 ```javascript let fruits = ["apple", "banana", "cherry", "date"]; fruits.splice(1, 2); // 从索引1处开始,删除2个元素 console.log(fruits); // 输出: ["apple", "date"] ``` --- #### 添加元素 通过在第三个及后续参数传入新的值来实现插入功能。 ```javascript let numbers = [1, 2, 3]; numbers.splice(1, 0, "a", "b"); // 在索引1之前插入"a"和"b" console.log(numbers); // 输出: [1, "a", "b", 2, 3] ``` --- #### 替换元素 结合删除与新增的功能即可达到替换的效果。 ```javascript let colors = ["red", "green", "blue"]; colors.splice(1, 1, "yellow", "orange"); // 将绿色替换成黄色和橙色 console.log(colors); // 输出: ["red", "yellow", "orange", "blue"] ``` --- #### 返回值说明 调用 `splice` 后返回的是被删除元素组成的数组;如果没有删除任何项,则返回为空数组[]。 ```javascript let veggies = ['carrot', 'lettuce', 'pepper']; let removedItems = veggies.splice(-1, 1); console.log(removedItems); // 输出: ["pepper"] (最后一个元素已被移除) console.log(veggies); // 输出: ["carrot", "lettuce"] ``` --- ### 总结 `splice` 提供了一种灵活的方式来动态调整数组结构,无论是增删还是改都十分便捷有效[^2]。然而需要注意它的副作用——即对源数组进行了不可逆的变化,在某些场景下可能需要先复制再操作以保留初始状态[^3]。 ```javascript // 复制后再使用 splice 防止污染原数组 const originalArray = [5, 6, 7]; const newArray = [...originalArray]; newArray.splice(1, 1); console.log(newArray); // [5, 7] console.log(originalArray); // [5, 6, 7], 不受影响 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值