<center>JavaScript数组方法大全</center>

本文详细介绍JavaScript数组的创建方法及常用操作,包括不改变原数组的方法如concat(), join(), slice()等,以及改变原数组的方法如push(), pop(), reverse()等。此外还介绍了循环数组的方法forEach()和其他ES5新增的方法。

数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习,下面小编给大家整理了关于数组的操作方法,一起看看吧。

数组创建
JavaScript中创建数组有两种方式,第一种是使用 Array 构造函数:

var arr1 = new Array(); //创建一个空数组

var arr2 = new Array(20); // 创建一个包含20项的数组

var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组

创建数组的第二种基本方式是使用数组字面量表示法:


var arr4 = []; //创建一个空数组

var arr5 = [20]; // 创建一个包含1项的数组

var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组

在读取和设置数组的值时,要使用方括号并提供相应值的基于 0 的数字索引:

var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组

alert(arr6[0]); //lily

arr6[1] = "mary"; //修改第二项为mary

arr6[3] = "sean"; //增加第四项为sean

JavaScript中数组的length属性是可以修改的,看下面的示例:

var arr = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组

arr[arr.length]
= "sean"; //在下标为3处(也就是数组尾部)添加一项"sean"

arr.length =
arr.length-1; //将数组的最后一项删除

如果需要判断一个对象是不是数组对象,在ECMAScript 5之前,我们可以通过 instanceof Array去判断,但是instanceof 操作符的问题在于,它假定只有一个全局执行环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的 Array 构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。

ECMAScript 5 新增了 Array.isArray()方法。这个方法的目的是最终确定某个值到底是不是数组,而不管它是在哪个全局执行环境中创建的。

Array对象常用方法:

不改变原数组:
1、concat() 连接两个或多个数组,并将新的数组返回,不改变原数组,返回新的数组

2、join() 把数组中所有元素放入一个字符串,将数组转换为字符串,不改变原数组,返回字符串

3、slice() 从已有的数组中返回选定的元素,提取部分元素,放到新数组中,参数解释:1:截取开始的位置的索引,包含开始索引;2:截取结束的位置的索引,不包含结束索引。不改变原数组,返回一个新数组

4、toString() 把数组转为字符串,不改变原数组,返回数组的字符串形式

改变原数组:
5、pop() 删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined,改变原数组,返回被删除的元素

6、push() 向数组末尾添加一个或多个元素,改变原数组,返回新数组的长度

7、reverse() 颠倒数组中元素的顺序,改变原数组,返回该数组

8、shift() 把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined,改变原数组,返回第一个元素的值

9、sort() 对数组元素进行排序,改变原数组,返回该数组

10、splice() 从数组中添加/删除项目,改变原数组,返回被删除的元素

11、unshift() 向数组的开头添加一个或多个元素,改变原数组,返回新数组的长度

循环数组
12、forEach() 浏览器会在回调函数中传递三个参数

  第一个参数就是当前正在遍历的元素

  第二个参数就是当前正在遍历的元素的索引

  第三个参数就是正在遍历的数组

var arr=[‘a’,‘b’,‘c’];
arr.forEach(function(item,index){
console.log(item); //a b c
console.log(index);//0 1 2
});

数组方法
Array对象常用方法:

不改变原数组:
1、concat() 连接两个或多个数组,并将新的数组返回,不改变原数组,返回新的数组

2、join() 把数组中所有元素放入一个字符串,将数组转换为字符串,不改变原数组,返回字符串

3、slice() 从已有的数组中返回选定的元素,提取部分元素,放到新数组中,参数解释:1:截取开始的位置的索引,包含开始索引;2:截取结束的位置的索引,不包含结束索引。不改变原数组,返回一个新数组

4、toString() 把数组转为字符串,不改变原数组,返回数组的字符串形式

改变原数组:
5、pop() 删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined,改变原数组,返回被删除的元素

6、push() 向数组末尾添加一个或多个元素,改变原数组,返回新数组的长度

7、reverse() 颠倒数组中元素的顺序,改变原数组,返回该数组

8、shift() 把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined,改变原数组,返回第一个元素的值

9、sort() 对数组元素进行排序,改变原数组,返回该数组

10、splice() 从数组中添加/删除项目,改变原数组,返回被删除的元素

11、unshift() 向数组的开头添加一个或多个元素,改变原数组,返回新数组的长度

循环数组
12、forEach() 浏览器会在回调函数中传递三个参数

  第一个参数就是当前正在遍历的元素

  第二个参数就是当前正在遍历的元素的索引

  第三个参数就是正在遍历的数组

var arr=[‘a’,‘b’,‘c’];
arr.forEach(function(item,index){
console.log(item); //a b c
console.log(index);//0 1 2
});

join()

push()和pop()

shift() 和 unshift()

sort()

reverse()

concat()

slice()

splice()

indexOf()和 lastIndexOf() (ES5新增)

forEach() (ES5新增)

map() (ES5新增)

filter() (ES5新增)

every() (ES5新增)

some() (ES5新增)

reduce()和 reduceRight() (ES5新增)

针对ES5新增的方法浏览器支持情况:

Opera 11+

Firefox 3.6+

Safari 5+

Chrome 8+

Internet
Explorer 9+


对于支持的浏览器版本,可以通过Array原型扩展来实现。下面详细介绍一下各个方法的基本功能。

**1、join()**
join(separator): 将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符.

var arr = [1,2,3];

console.log(arr.join());
// 1,2,3

console.log(arr.join("-")); // 1-2-3

console.log(arr);
// [1, 2, 3](原数组不变)

通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能返回重复后的字符串,函数如下:

function repeatString(str,
n) {

return new Array(n + 1).join(str);

}

console.log(repeatString(“abc”, 3)); // abcabcabc

console.log(repeatString(“Hi”, 5)); //
HiHiHiHiHi

**2、push()和pop()**

push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。

pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。

var arr = [“Lily”,“lucy”,“Tom”];

var count =
arr.push(“Jack”,“Sean”);

console.log(count);
// 5

console.log(arr);
// [“Lily”, “lucy”, “Tom”,“Jack”, “Sean”]

var item =
arr.pop();

console.log(item);
// Sean

console.log(arr);
// [“Lily”, “lucy”, “Tom”,“Jack”]

**3、shift() 和 unshift()**

**shift()**:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。

**unshift**:将参数添加到原数组开头,并返回数组的长度 。

这组方法和上面的push()和pop()方法正好对应,一个是操作数组的开头,一个是操作数组的结尾。


var arr = [“Lily”,“lucy”,“Tom”];

var count =
arr.unshift(“Jack”,“Sean”);

console.log(count);
// 5

console.log(arr);
//[“Jack”, “Sean”, “Lily”,“lucy”, “Tom”]

var item =
arr.shift();

console.log(item);
// Jack

console.log(arr);
// [“Sean”, “Lily”, “lucy”,“Tom”]

**4、sort()**

sort():按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。

在排序时,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值, sort()方法比较的也是字符串,因此会出现以下的这种情况:

var arr1 = [“a”, “d”, “c”, “b”];

console.log(arr1.sort());
// [“a”, “b”, “c”,“d”]

arr2 = [13, 24, 51, 3];

console.log(arr2.sort());
// [13, 24, 3, 51]

console.log(arr2);
// 13, 24, 3, 51

为了解决上述问题,sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。以下就是一个简单的比较函数:

function compare(value1,value2) {
if (value1 <value2) {
return -1;
} else if (value1 >value2) {
return 1;
} else {
return 0;
}
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare));
// [3, 13, 24, 51]


如果需要通过比较函数产生降序排序的结果,只要交换比较函数返回的值即可:

function compare(value1,value2) {
if (value1 <value2) {
return 1;
} else if (value1 >value2) {
return -1;
} else {
return 0;
}
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare));
// [51, 24, 13, 3]

**5、reverse()**

reverse():反转数组项的顺序。

var arr = [13, 24, 51, 3];

console.log(arr.reverse());
//[3, 51, 24, 13]

console.log(arr);
//3, 51, 24, 13

**6、concat()**

concat() :将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。

var arr = [1,3,5,7];

var arrCopy =arr.concat(9,[11,13]);

console.log(arrCopy);
//[1, 3, 5, 7, 9, 11, 13]

console.log(arr);
// 1, 3, 5, 7

从上面测试结果可以发现:传入的不是数组,则直接把参数添加到数组后面,如果传入的是数组,则将数组中的各个项添加到数组中。但是如果传入的是一个二维数组呢?

var arrCopy2 =arr.concat([9,[11,13]]);

console.log(arrCopy2);
//[1, 3, 5, 7, 9, Array[2]]

console.log(arrCopy2[5]); //[11, 13]

上述代码中,arrCopy2数组的第五项是一个包含两项的数组,也就是说concat方法只能将传入数组中的每一项添加到数组中,如果传入数组中有些项是数组,那么也会把这一数组项当作一项添加到arrCopy2中。

**7、slice()**

**slice():**返回从原数组中指定开始下标到结束下标之间的项组成的新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。

var arr = [1,3,5,7,9,11];

var arrCopy =arr.slice(1);

var arrCopy2 =arr.slice(1,4);

var arrCopy3 =arr.slice(1,-2);

var arrCopy4 =arr.slice(-4,-1);

console.log(arr);
//1, 3, 5, 7, 9, 11

console.log(arrCopy);
//[3, 5, 7, 9, 11]

console.log(arrCopy2);
//[3, 5, 7]

console.log(arrCopy3);
//[3, 5, 7]

console.log(arrCopy4);
//[5, 7, 9]

arrCopy只设置了一个参数,也就是起始下标为1,所以返回的数组为下标1(包括下标1)开始到数组最后。

arrCopy2设置了两个参数,返回起始下标(包括1)开始到终止下标(不包括4)的子数组。

arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。

arrCopy4中两个参数都是负数,所以都加上数组长度6转换成正数,因此相当于slice(2,5)。


**8、splice()**

**splice():**很强大的数组方法,它有很多种用法,可以实现删除、插入和替换。

删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2)会删除数组中的前两项。

插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的项数)和要插入的项。例如,splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。

替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。

splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除任何项,则返回一个空数组。


var arr = [1,3,5,7,9,11];

var arrRemoved =arr.splice(0,2);

console.log(arr);
//[5, 7, 9, 11]

console.log(arrRemoved);
//[1, 3]

var arrRemoved2= arr.splice(2,0,4,6);

console.log(arr);
// [5, 7, 4, 6, 9, 11]

console.log(arrRemoved2);
// []

var arrRemoved3= arr.splice(1,1,2,4);

console.log(arr);
// [5, 2, 4, 4, 6, 9, 11]

console.log(arrRemoved3);
//[7]

**9、indexOf()和lastIndexOf()**

indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的开头(位置 0)开始向后查找。

lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。

这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符。

var arr = [1,3,5,7,7,5,3,1];

console.log(arr.indexOf(5)); //2

console.log(arr.lastIndexOf(5)); //5

console.log(arr.indexOf(5,2)); //2

console.log(arr.lastIndexOf(5,4)); //2

console.log(arr.indexOf(“5”)); //-1

**10、forEach(**)

**forEach()**:对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。

var arr = [1, 2, 3, 4, 5];
arr.forEach(function(x, index,a){
console.log(x+ ‘|’ + index + ‘|’ + (a ===arr));
});

// 输出为:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true

**11、map()**

map():指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

下面代码利用map方法实现数组中每个数求平方。

var arr = [1, 2, 3, 4, 5];
var arr2 =arr.map(function(item){

return item*item;

});

console.log(arr2);

**12、filter()**

**filter():**“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 =arr.filter(function(x, index) {
return index % 3 === 0 || x >= 8;
});

console.log(arr2);
//[1, 4, 7, 8, 9, 10]

**13、every()**

every():判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。


var arr = [1, 2, 3, 4, 5];

var arr2 =arr.every(function(x) {

return x < 10;

});

console.log(arr2);
//true

var arr3 =arr.every(function(x) {

return x < 3;

});

console.log(arr3);
// false

**14、some()**

**some()**:判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。


var arr = [1, 2, 3, 4, 5];

var arr2 =arr.some(function(x) {

return x < 3;

});

console.log(arr2);
//true

var arr3 =arr.some(function(x) {

return x < 1;

});

console.log(arr3);
// false

**15、reduce()和reduceRight()**

这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。

传给 reduce()和reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

下面代码用reduce()实现数组求和,数组一开始加了一个初始值10。

var values = [1,2,3,4,5];

var sum =
values.reduceRight(function(prev, cur, index, array){

return prev + cur;

},10);

console.log(sum);
//25

--------------------- 
作者:元仙僧 
来源:优快云 
原文:https://blog.youkuaiyun.com/weixin_42567389/article/details/86538414 
版权声明:本文为博主原创文章,转载请附上博文链接!
// 模拟CAD图元数据属性标签 function getCADEntitiesAttTags() { return [ '位号', '名称', '设备描述', '材质', '介质名称(中)', '介质粘度', '介质密度', 'DOCUMENTNO_1', '连接类型', '连接标准', '尺寸', '操作压力', '操作温度', '设计压力', '设计温度', '品牌', '型号', '执行器作用方式', '一般状态', '位置反馈', '数据表号', '物料编码', '备注', '模型状态', '等级', '管线号', //'句柄' ]; } <TooltipConfig> <TooltipPane class="branch"> <Attribute>介质代号</Attribute> <Attribute>尺寸</Attribute> <Attribute>管线编号</Attribute> <Attribute>管道等级</Attribute> <Attribute>管道保护</Attribute> <Attribute>介质名称(中)</Attribute> <Attribute>介质名称(英)</Attribute> <Attribute>操作压力</Attribute> <Attribute>操作温度</Attribute> <Attribute>设计压力</Attribute> <Attribute>设计温度</Attribute> <Attribute>介质密度</Attribute> <Attribute>介质粘度</Attribute> <Attribute>管道标准</Attribute> <Attribute>材质</Attribute> <Attribute>抛光</Attribute> <Attribute>相态</Attribute> <Attribute>管线号</Attribute> </TooltipPane> <TooltipPane class="valve"> <Attribute>位号</Attribute> <Attribute>尺寸</Attribute> <Attribute>物料编码</Attribute> <Attribute>品牌</Attribute> <Attribute>型号</Attribute> <Attribute>名称</Attribute> <Attribute>介质名称(中)</Attribute> <Attribute>操作温度</Attribute> <Attribute>操作压力</Attribute> <Attribute>设计温度</Attribute> <Attribute>设计压力</Attribute> <Attribute>一般状态</Attribute> <Attribute>连接类型</Attribute> <Attribute>连接标准</Attribute> <Attribute>材质</Attribute> <Attribute>抛光</Attribute> <Attribute>介质密度</Attribute> <Attribute>介质粘度</Attribute> <Attribute>气缸材质</Attribute> <Attribute>位置反馈</Attribute> <Attribute>执行器作用方式</Attribute> <Attribute>卫生等级</Attribute> <Attribute>阀芯类型</Attribute> <Attribute>备注</Attribute> </TooltipPane> <TooltipPane class="equipment"> <Attribute>位号</Attribute> <Attribute>尺寸</Attribute> <Attribute>物料编码</Attribute> <Attribute>品牌</Attribute> <Attribute>型号</Attribute> <Attribute>名称</Attribute> <Attribute>介质名称(中)</Attribute> <Attribute>操作温度</Attribute> <Attribute>操作压力</Attribute> <Attribute>设计温度</Attribute> <Attribute>设计压力</Attribute> <Attribute>连接类型</Attribute> <Attribute>连接标准</Attribute> <Attribute>抛光</Attribute> <Attribute>介质密度</Attribute> <Attribute>介质粘度</Attribute> <Attribute>备注</Attribute> <Attribute>自排尽能力</Attribute> <Attribute>滤芯数量</Attribute> <Attribute>滤壳尺寸</Attribute> <Attribute>滤孔尺寸</Attribute> <Attribute>滤芯过滤面积</Attribute> <Attribute>滤芯连接标准</Attribute> </TooltipPane> <TooltipPane class="vessel"> <Attribute>位号</Attribute> <Attribute>名称</Attribute> <Attribute>材质</Attribute> <Attribute>备注</Attribute> <Attribute>特性</Attribute> </TooltipPane> <TooltipPane class="instrument"> <Attribute>代号</Attribute> <Attribute>编号</Attribute> <Attribute>物料编码</Attribute> <Attribute>品牌</Attribute> <Attribute>型号</Attribute> <Attribute>名称</Attribute> <Attribute>介质名称(中)</Attribute> <Attribute>操作温度</Attribute> <Attribute>操作压力</Attribute> <Attribute>连接类型</Attribute> <Attribute>连接标准</Attribute> <Attribute>材质</Attribute> <Attribute>抛光</Attribute> <Attribute>介质密度</Attribute> <Attribute>介质粘度</Attribute> <Attribute>备注</Attribute> </TooltipPane> <TooltipPane class="ctf"> <Attribute>名称</Attribute> <Attribute>图纸号</Attribute> <Attribute>介质代号</Attribute> <Attribute>对接系统</Attribute> <Attribute>流体特性</Attribute> <Attribute>序号</Attribute> </TooltipPane> </TooltipConfig> 怎么做成类似的xml格式化结构文本
07-29
<template> <div :class="prefixCls"> <div> <table style="width: 100%; margin: 10px auto 0 auto; border-collapse:collapse;"> <thead> <tr> <th colspan="12" style="padding: 10px;font-size:20px">常德芙蓉烟叶复烤有限责任公司</th> </tr> <tr> <th colspan="12" style="padding: 10px;font-size:18px">物资调拨承运结算单</th> </tr> <tr> <th colspan="9" style="padding: 10px 5px;"></th> <th colspan="1" style="padding: 10px 5px;">单据号:</th> <th colspan="2" style="padding: 10px 5px;text-align: left;">{{ rowData.splitNo }}</th> </tr> <tr> <th colspan="2" style="padding: 10px 5px;">发货仓库:</th> <th colspan="2" style="padding: 10px 5px;text-align: left;"><el-input v-if="isEditOut" v-model="this.orderData.dataList[0].outStoreName"></el-input><div v-else>{{ this.orderData.dataList[0].outStoreName }}</div></th> <th colspan="5" style="padding: 10px 5px;"></th> <th colspan="1" style="padding: 10px 5px;">记录编号:</th> <th colspan="2" style="padding: 10px 5px;text-align: left;">FRFK/YW/GL-05/03.0</th> </tr> <tr> <th colspan="2" style="padding: 10px 5px;">收货仓库:</th> <th colspan="2" style="padding: 10px 5px;text-align: left;">{{ this.orderData.dataList[0].inStoreName }}</th> <th colspan="5" style="padding: 10px 5px;">{{ rowData }}</th> <th colspan="1" style="padding: 10px 5px;">单位:</th> <th colspan="2" style="padding: 10px 5px;text-align: left;">KG</th> </tr> </thead> <thead> <tr> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">类 别</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">品 种</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">年 度</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">产 地</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">等 级</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" colspan="2">应发数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" colspan="2">实发数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" colspan="2">实收数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;" rowspan="2">到货时间</th> </tr> <tr> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">件数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">重量</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">件数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">重量</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">件数</th> <th style="padding: 10px 5px;border: 1px solid #000;text-align: center;">重量</th> </tr> </thead> <tbody> <tr v-for="(item, index) in orderData.dataList" :key="index"> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.category }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.variety }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.planYear }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.placeOrigin }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.gradeNo }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ Math.ceil(item.amountKg/40)}}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;">{{ item.amountKg }}</td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;"><div v-if="showOut"><el-input v-if="isEditOut" v-model="item.realAmountPiece"></el-input><div v-else>{{ item.realAmountPiece }}</div></div></td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;"></td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;"><div v-if="showIn"><el-input v-if="isEditIn" v-model="item.ReceiveAmountPiece"></el-input><div v-else>{{item.ReceiveAmountPiece}}</div></div></td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;"></td> <td style="padding: 10px 5px;border: 1px solid #000;text-align: center;"></td> </tr> <tr> <th colspan="1" style="padding: 10px 5px;border: 1px solid #000;">备注:</th> <th colspan="11" style="padding: 10px 5px;border: 1px solid #000;text-align: left;">{{ item.remark }}</th> </tr> </tbody> </table> <ul style="display: flex; flex-wrap: wrap; justify-content: space-between;font-weight: 700;"> <li style="width: 30%; margin: 10px 0 0px; list-style: none"> 制单:{{ item.createUserName }} </li> <li style="width: 30%; margin: 10px 0 0px; list-style: none"> 发货保管员: </li> <li style="width: 30%; margin: 10px 0 0px; list-style: none"> 汽车车号: </li> <li style="width: 30%; margin: 10px 0; list-style: none"> 承运司机: </li> <li style="width: 30%; margin: 10px 0; list-style: none"> 收货保管员: </li> <li style="width: 30%; margin: 10px 0; list-style: none"> </li> </ul> <ul style="display: flex; flex-wrap: wrap; justify-content: space-between;"> <li style="width: 25%; margin: 10px 0 0px; list-style: none"> 第一联:发货保管员 </li> <li style="width: 25%; margin: 10px 0 0px; list-style: none"> 第二联:运费结算凭证 </li> <li style="width: 25%; margin: 10px 0 0px; list-style: none"> 第三联:收货保管员 </li> <li style="width: 25%; margin: 10px 0; list-style: none"> 第四联:门卫 </li> </ul> </div> </div> </template> <script> import moment from 'moment' export default { name: "orderDetailPdf", props: { showOut: { type: Boolean, default: false, }, isEditOut: { type: Boolean, default: false, }, showIn: { type: Boolean, default: false, }, isEditIn: { type: Boolean, default: false, }, rowData: { type: Object, default: {}, } }, data() { return { prefixCls: "orderDetailPdf", row: {}, orderData: { dataList:[], }, orderStatus: { 10: "待付款", 20: "待审核", 30: "管理员取消", 35: "会员取消", 40: "审核不通过", 50: "审核通过", 80: "已回收", 90: "已完成", }, }; }, created() {}, mounted() { if (this.rowData) { this.orderData.dataList =this.findItemData(this.rowData); } else { this.orderData.dataList = []; } this.$notify({ title: '成功', message: this.orderData.dataList, type: 'success', duration: 3000, // 显示时长(毫秒),0 表示不自动关闭 position: 'top-right' // 位置:top-right/top-left/bottom-right/bottom-left }); }, methods: { findItemData(id){ this.$axios({ method: "post", url: `${this.global.MSI_STORAGE}/splitAllot/findSplitAllotPrint`, data: { data:{ splitItemId: id } }, }).then((res) => { if (res.data.status === "Y") { return res.data.data; } else { this.$message.error(res.data.message); } }); }, formatDateYMD (date) { if (!date) { return '' } return moment(date).format('YYYY-MM-DD') }, mathFormatter(num) { if (isNaN(parseFloat(num))) { return null; } var formatter = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2, }); var n = formatter.format(num).replace(',', '') return n } }, }; </script> <style lang="scss" scoped> $prefixCls: "orderDetailPdf"; .#{$prefixCls} { } </style>以上vue运行时无法显示页面,检查时发现接口调用正常,为什么?
07-18
下面这段是PHP5.6,如何改成PHP8.4? <?php require_once("include/global.php"); ?> <html> <head> <?php echo getMeta('gb') ?> <title><?php echo $_GLOBAL_CONF['SITE_NAME'] ?></title> </head> <link rel="stylesheet" href="/common.css" type="text/css"> <style> a {color:#616651} .img1 {border:solid 0 black} </style> <BODY link=#cc0000 leftMargin=0 topMargin=0 marginwidth="0" marginheight="0"> <?php require_once("include/header.php"); ?> <?php /* <div id=ad_dl01 style="z-index:1; visibility:visible; width:100px; position:absolute; top:115px; right:5px;"> <table border=0 cellspacing=0 cellpadding=0 width=300 style="table-layout:fixed; word-break:break-all" bgcolor=#d3e9FF> <tr> <td><iframe width="300" height="200" style="border: solid 1px black; width: 600px; height: 30px;" frameborder="0"></iframe></td> </tr> </table> </div> <script type=text/javascript> var step_ratio = 0.1; objs = new Array(); objs_x = new Array(); objs_y = new Array(); function addfollowmark(name, x, y) { i = objs.length; objs[i] = document.getElementById(name); objs_x[i] = x; objs_y[i] = y; } function followmark() { for(var i=0; i<objs.length; i++) { var fm = objs[i]; var fm_x = typeof(objs_x[i]) == 'string' ? eval(objs_x[i]) : objs_x[i]; var fm_y = typeof(objs_y[i]) == 'string' ? eval(objs_y[i]) : objs_y[i]; if (fm.offsetLeft != document.body.scrollLeft + fm_x) { var dx = (document.body.scrollLeft + fm_x - fm.offsetLeft) * step_ratio; dx = (dx > 0 ? 1 : -1) * Math.ceil(Math.abs(dx)); fm.style.left = fm.offsetLeft + dx; } if (fm.offsetTop != document.body.scrollTop + fm_y) { var dy = (document.body.scrollTop + fm_y - fm.offsetTop) * step_ratio; dy = (dy > 0 ? 1 : -1) * Math.ceil(Math.abs(dy)); fm.style.top = fm.offsetTop + dy; } fm.style.display = ''; } } addfollowmark("ad_dl01", "document.body.clientWidth-305", 115); setInterval('followmark()',20); </script> */ ?> <center> <table width=95% border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="2"><img src="images/tb_left.jpg" width="2" height="28" /></td> <td background="images/tb_bg.jpg"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <?php if($_SESSION['ss_admin']>0) echo " <form name=loginform method=post action=/login.php> <input type=hidden name=username value='$ss_name'> <input type=hidden name=password value='$ss_password'> "; ?> <tr> <td width="9"> </td> <td width=111><table border="0" cellspacing="0" cellpadding="0"> <tr> <td width="2"><img src="images/tb_sel_left.jpg" width="2" height="28" /></td> <td width="124" align="center" background="images/tb_sel_bg.jpg" class="selmenu">首页 Home</td> <td width="4"><img src="images/tb_sel_right.jpg" width="4" height="28" /></td> </tr> </table></td> <td align="center"><a href=/search.php class="menu">产品 Products</a></td> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/newest class="menu">新产品 New Products</a></td> <td align="center"><span class="bai">|</span></td> <?php /* <td align="center"><a href=/cart.php class="menu">Order</a></td> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/guestbook class="menu">Guestbook</a></td> <td align="center"><span class="bai">|</span></td>*/ ?> <td align="center"><a href=/help/about.php class="menu">联系我们 Contact us</a></td> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/register class="menu">注册 Register</a></td> <?php if($_SESSION['ss_admin']>0){ ?> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/admin class="menu" target=_blank>Admin</a> <input type=submit value=ReLogin style=cursor:hand></td> <?php } ?> <?php if($_SESSION['ss_userid']>0){ ?> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/bill class="menu">Bills</a></td> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/logout.php class="menu">退出 Logout</a></td> <?php }else{ ?> <td align="center"><span class="bai">|</span></td> <td align="center"><a href=/login.php class="menu">登录 Login</a></td> <?php } ?> </tr> <?php if($_SESSION['ss_admin']>0) echo " </form> "; ?> </table></td> <td width="2"><img src="images/tb_right.jpg" width="2" height="28" /></td> </tr> </table></td> </tr> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="0"> <form name=searchform action=search.php method=post> <tr> <td width="6"><img src="images/tb_bt_left.jpg" width="6" height="62" /></td> <td background="images/tb_bt_bg.jpg"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="266" align="center" valign="top" class="vd" style="font-size:11px;color:#333333"></td> <td height="58" align="center"><select name=key> <option value=model_no <? if($key == "model_no") echo "selected"; ?>>型号 Model No.</option> <option value=name <? if($key == "name") echo "selected"; ?>>名称 Name</option> <option value=features <? if($key == "features") echo "selected"; ?>>规格 Features</option> <option value=description <? if($key == "description") echo "selected"; ?>>说明 Descriptions</option> <option value=fob_port <? if($key == "fob_port") echo "selected"; ?>>港口 Fob Port</option> <option value=color <? if($key == "color") echo "selected"; ?>>颜色 Color</option> <option value=matial <? if($key == "matial") echo "selected"; ?>>材料 Matial</option> </select> 关键词 Keyword:<input type=text size=5 name=value value="<?php echo $value?>"> 产品号 ProductID:<input type=text size=5 name=productid value="<?php echo $productid?>"> <input type=hidden name=typeid value="<?php echo $typeid?>"> <input type=submit name=sub6 value="查找 Search"></td> </tr> </table></td> <td width="7"><img src="images/tb_bt_right.jpg" width="7" height="62" /></td> </tr> </form> </table></td> </tr> </table> <table width=95% border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td valign="top" width=350><table width="100%" height="160" border="0" cellpadding="1" cellspacing="1" bgcolor="#F3F1E7"> <tr> <td valign="top" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="0" cellpadding=5> <tr> <td height="22" align="left" bgcolor="#E7E4D2"></td> </tr> <tr> <td height="350" align="left" class="vd"><FONT style=font-size:14px;color:#000000;line-height:22px><?php include "include/html/notice1.html";?><FONT></td> </tr> <tr> <td height="1" bgcolor="#f5f5f5"></td></tr> <tr> <td height="20" align="right"><a href=/help/about.php class="blue" target=_blank>联系我们 Contact Us</a>   |   <a href=/help/about.php class="blue" target=_blank>更多 More</a>   </td> </tr> </table></td> </tr> </table></td> <td width="5"> </td> <td> <table cellspacing=0 cellpadding=0 align="center" bgcolor=#ffffff> <tr><td align=center> <?php /* <font style=font-size:5px><br></font><table border=0 cellspacing=0 cellpadding=0> <tr> <td align=center width=311><img src=images/100001.jpg class=img1><font style=font-size:5px><br><br></font></td> <td bgcolor=#c1c69d width=1></td> <td align=center width=311><table cellspacing=0 cellpadding=0 align="center"> <tr align=center> <td colspan=2 height=5></td> </tr> <tr align=center> <td><a href=search.php?typeid=1001000><img src=images/200001.jpg alt="Molding Case" class=img1></a></td> <td><a href=search.php?typeid=1002000><img src=images/200002.jpg alt="Assembled Case" class=img1></a></td> </tr> <tr align=center> <td><a href=search.php?typeid=1003000><img src=images/200003.jpg alt="Instrument Box" class=img1></a></td> <td><a href=search.php?typeid=1004000><img src=images/200004.jpg alt="Aluminum Box" class=img1></a></td> </tr> </table><font style=font-size:2px><br><br></font></td> </tr> <tr> <td bgcolor=#c1c69d colspan=3></td> </tr> <tr> <td align=center><font style=font-size:5px><br></font><table cellspacing=0 cellpadding=0 align="center"> <tr align=center> <td><a href=search.php?typeid=2001000><img src=images/300001.jpg alt="Premium Bag" class=img1></a></td> <td><a href=search.php?typeid=2002000><img src=images/300002.jpg alt="Casual Bags" class=img1></a></td> </tr> </table></td> <td bgcolor=#c1c69d width=1></td> <td align=center><font style=font-size:5px><br></font><table cellspacing=0 cellpadding=0 align="center"> <tr align=center> <td><a href=search.php?typeid=3001000><img src=images/400001.jpg alt="Solid Wood Item" class=img1></a></td> <td><a href=search.php?typeid=3002000><img src=images/400002.jpg alt="Gift Item" class=img1></a></td> </tr> </table></td> </tr> </table><font style=font-size:5px><br></font>*/?> <a href=search.php><img src=images/01.jpg alt="Enter Please" class=img1 width=600></a> </td></tr> </table> </td> </tr> </table> <table border=0 cellpadding=0 cellspacing=0><form method=POST action=n2e.php target=frame1> <tr><td valign=middle>数字 Num<input type=text SIZE=16 name=id><INPUT TYPE=submit VALUE="英语 EN" NAME=s></td> <td><IFRAME name=frame1 frameBorder=1 width=780 scrolling=no height=26></IFRAME></td></tr></form> </table> <table border=0 cellpadding=0 cellspacing=0><form method=POST action=n2c.php target=frame2> <tr><td valign=middle>数字 Num<input type=text SIZE=16 name=id><INPUT TYPE=submit VALUE="中文 CN" NAME=s></td> <td><IFRAME name=frame2 frameBorder=1 width=780 scrolling=no height=26></IFRAME></td></tr></form> </table> <?php require_once("include/foot.php"); ?> </center> </body> </html>
06-11
<think>我们正在将一段PHP5.6的代码迁移到PHP8.4。PHP8.4(目前尚未发布,但我们可以理解为迁移到PHP8.0+的版本)相对于PHP5.6有大量的变化和废弃的功能。下面我们将逐步分析代码并修改。主要注意事项:1.短标签`<?`和`<?=`:在PHP5.6中,短标签在某些配置下可用,但在PHP7+中,虽然短标签`<?=`(用于输出)仍然可用,但短标签`<?`(不带等号)已被废弃或需要明确开启。建议将`<?`替换为`<?php`,而`<?=`可以保留,因为它在PHP中始终可用。2.全局变量:代码中使用了`$_SESSION`和`$_GLOBAL_CONF`等,需要确保这些变量在PHP8中仍然正确初始化。3.`register_globals`:在PHP5.6中,`register_globals`可能被开启,但在PHP8中已完全移除。因此,代码中直接使用的变量(如`$ss_name`、`$ss_password`、`$key`、`$value`、`$productid`、`$typeid`)应该通过超全局数组(如`$_POST`、`$_GET`、`$_SESSION`)来获取,而不是依赖于注册全局变量。4.代码中有一段被注释掉的JavaScript代码,我们不需要修改它,因为它是注释状态。5.错误抑制符`@`:如果代码中有使用,需要注意在PHP8中可能会更严格地报错。6.MySQL扩展:代码中没有直接出现MySQL函数,但如果有,需要替换为MySQLi或PDO。7.`$_SESSION`的使用:在PHP8中,`$_SESSION`的使用方式没有改变,但需要确保在操作`$_SESSION`之前已经调用了`session_start()`。修改步骤:1.替换短标签:将`<?`替换为`<?php`,保留`<?=`。2.将直接使用的变量改为从超全局数组获取。例如:-将`$ss_name`、`$ss_password`改为`$_SESSION['ss_name']`和`$_SESSION['ss_password']`(需要确保这些session变量存在)。-同样,将`$key`、`$value`、`$productid`、`$typeid`改为从`$_POST`或`$_GET`中获取(根据表单提交方法,这里表单是`method=post`,所以可能是`$_POST`)。3.在代码开头,检查是否已经启动了session。通常,`session_start()`应该在脚本开始处调用。在`global.php`中可能已经启动了session,但为了确保,可以在代码开头检查。但是,请注意,代码中已经包含了`global.php`,我们假设它已经处理了session。如果没有,则需要添加。4.替换过时的标签:-`<BODY>`标签改为小写`<body>`(虽然不是PHP问题,但建议遵循XHTML标准)。-`<center>`标签在HTML5中已废弃,改用CSS。5.代码中使用了`<?if(...)`,这是短标签,应改为`<?phpif(...)`。6.在表单中,有`<?if($key=="model_no")echo"selected";`,需要改为`<?phpif(isset($key)&&$key=="model_no")echo"selected";`,以避免未定义变量警告。7.PHP8中,未定义变量的通知可能会变成警告,因此需要确保变量在使用前已经定义或者进行判断。由于代码较长,我们只修改关键部分。以下是修改后的代码:```php<?phprequire_once("include/global.php");?><html><head><?phpechogetMeta('gb')?><title><?phpecho$_GLOBAL_CONF['SITE_NAME']?></title></head><linkrel="stylesheet"href="/common.css"type="text/css"><style>a{color:#616651}.img1{border:solid0black}</style><bodylink="#cc0000"leftmargin="0"topmargin="0"marginwidth="0"marginheight="0"><?phprequire_once("include/header.php");?><?php/*这里是注释掉的JavaScript代码,我们不需要修改*/?><divstyle="margin:0auto;width:95%;"><!--替换<center>标签,用CSS实现居中--><tablewidth="100%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><td><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdwidth="2"><imgsrc="images/tb_left.jpg"width="2"height="28"/></td><tdbackground="images/tb_bg.jpg"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><?php//注意:这里我们用$_SESSION代替了原来的$ss_admin,$ss_name,$ss_passwordif(!empty($_SESSION['ss_admin'])&&$_SESSION['ss_admin']>0){//我们使用session中的用户名和密码echo'<formname="loginform"method="post"action="/login.php"><inputtype="hidden"name="username"value="'.htmlspecialchars($_SESSION['ss_name']).'"><inputtype="hidden"name="password"value="'.htmlspecialchars($_SESSION['ss_password']).'">';}?><tr><tdwidth="9"> </td><tdwidth=111><tableborder="0"cellspacing="0"cellpadding="0"><tr><tdwidth="2"><imgsrc="images/tb_sel_left.jpg"width="2"height="28"/></td><tdwidth="124"align="center"background="images/tb_sel_bg.jpg"class="selmenu">首页Home</td><tdwidth="4"><imgsrc="images/tb_sel_right.jpg"width="4"height="28"/></td></tr></table></td><tdalign="center"><ahref="/search.php"class="menu">产品Products</a></td><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/newest"class="menu">新产品NewProducts</a></td><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/help/about.php"class="menu">联系我们Contactus</a></td><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/register"class="menu">注册Register</a></td><?phpif(!empty($_SESSION['ss_admin'])&&$_SESSION['ss_admin']>0){?><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/admin"class="menu"target="_blank">Admin</a><inputtype="submit"value="ReLogin"style="cursor:hand"></td><?php}?><?phpif(!empty($_SESSION['ss_userid'])&&$_SESSION['ss_userid']>0){?><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/bill"class="menu">Bills</a></td><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/logout.php"class="menu">退出Logout</a></td><?php}else{?><tdalign="center"><spanclass="bai">|</span></td><tdalign="center"><ahref="/login.php"class="menu">登录Login</a></td><?php}?></tr><?phpif(!empty($_SESSION['ss_admin'])&&$_SESSION['ss_admin']>0){echo'</form>';}?></table></td><tdwidth="2"><imgsrc="images/tb_right.jpg"width="2"height="28"/></td></tr></table></td></tr><tr><td><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><formname="searchform"action="search.php"method="post"><tr><tdwidth="6"><imgsrc="images/tb_bt_left.jpg"width="6"height="62"/></td><tdbackground="images/tb_bt_bg.jpg"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdwidth="266"align="center"valign="top"class="vd"style="font-size:11px;color:#333333"></td><tdheight="58"align="center"><selectname="key"><optionvalue="model_no"<?phpif(isset($_POST['key'])&&$_POST['key']=="model_no")echo"selected";?>>型号ModelNo.</option><optionvalue="name"<?phpif(isset($_POST['key'])&&$_POST['key']=="name")echo"selected";?>>名称Name</option><optionvalue="features"<?phpif(isset($_POST['key'])&&$_POST['key']=="features")echo"selected";?>>规格Features</option><optionvalue="description"<?phpif(isset($_POST['key'])&&$_POST['key']=="description")echo"selected";?>>说明Descriptions</option><optionvalue="fob_port"<?phpif(isset($_POST['key'])&&$_POST['key']=="fob_port")echo"selected";?>>港口FobPort</option><optionvalue="color"<?phpif(isset($_POST['key'])&&$_POST['key']=="color")echo"selected";?>>颜色Color</option><optionvalue="matial"<?phpif(isset($_POST['key'])&&$_POST['key']=="matial")echo"selected";?>>材料Matial</option></select>关键词Keyword:<inputtype="text"size="5"name="value"value="<?phpechoisset($_POST['value'])?htmlspecialchars($_POST['value']):'';?>">产品号ProductID:<inputtype="text"size="5"name="productid"value="<?phpechoisset($_POST['productid'])?htmlspecialchars($_POST['productid']):'';?>"><inputtype="hidden"name="typeid"value="<?phpechoisset($_POST['typeid'])?htmlspecialchars($_POST['typeid']):'';?>"><inputtype="submit"name="sub6"value="查找Search"></td></tr></table></td><tdwidth="7"><imgsrc="images/tb_bt_right.jpg"width="7"height="62"/></td></tr></form></table></td></tr></table><tablewidth="95%"border="0"align="center"cellpadding="0"cellspacing="0"style="margin:0auto;"><!--使用style="margin:0auto;"替代center标签--><tr><tdvalign="top"width="350"><tablewidth="100%"height="160"border="0"cellpadding="1"cellspacing="1"bgcolor="#F3F1E7"><tr><tdvalign="top"bgcolor="#FFFFFF"><tablewidth="100%"border="0"cellspacing="0"cellpadding="5"><tr><tdheight="22"align="left"bgcolor="#E7E4D2"></td></tr><tr><tdheight="350"align="left"class="vd"><fontstyle="font-size:14px;color:#000000;line-height:22px"><?phpinclude"include/html/notice1.html";?></font></td></tr><tr><tdheight="1"bgcolor="#f5f5f5"></td></tr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值