JS随手记——跨页面传值

目标需求:

实现将上一个页面的值传入下一个页面中。

分析:

通过修改外链JS的全局变量无法达到效果,在上个页面修改后,加载到新的页面数据却重置了,百度说可以JS再外链JS,试了也不好使(极大可能是方法没用对),所以本篇讲的是通过在url后加值来达到传输的效果。

具体实现:

首先,跨页面传值肯定是页面跳转时传输值,将a标签的href后加“?”后加数值。当然,?这玩意本来应该不是这么用的,只是这里这样写了而已,加问号之后,页面也能正常加载。a标签如下:

			<a href="phoneshow.html?id=0"></a>

当然你也可以“?”后面跟很多东西,这都随你。

然后新页面的JS中加入以下方法:

			function addphonetip(){
				//获取当前路径并切割ID
				var url = window.location.href;
				var phoneid = url.split("?")[1];
				//获取当前ID的手机信息字符串
				phoneid = phoneid.replace("id=","").trim();
				//获取并显示————手机名称
				phonename = phones[phoneid].split(" ")[0];
				document.getElementById("phonename").innerHTML = phonename.replace(/_/g," ");
				//获取并显示————手机价格
				Price = phones[phoneid].split(" ")[2];
				document.getElementById("Price").innerHTML = Price;
				//获取并显示————手机描述
				phonenamemini = phones[phoneid].split(" ")[1];
				document.getElementById("phonenamemini").innerHTML = phonenamemini;
				//获取并显示————手机图片路径
				var phonesrc = "./img/"+phonename.replace(/_/g," ")+".png";
				var phoneimg = document.getElementById("phoneimg");
				phoneimg.src = phonesrc;
			}

这里解释一下,url是获取当前页面的href,包括"?"之后的。
然后按“?”切割,获取“id=n”。
将“id=”替换为空,再将字符串去空格,获得n。
再根据n获取数组phones中的指定项。
这里phones是我的数组名,你写的时候换成你的。这里数组是外链的JS,下面会再提到。
之后就是按空格切割内容,将手机的名称呀,价格呀,描述呀,都赋值给对应标签的innerHTML属性,当然图片是src属性。
这里我用的是一维数组,每个手机的信息都是用空格拼凑起来的,所以这里用空格切割了一下。当然直接用二维数组也行,用JSON更好,只是我不会用,这里就不再累述了。

提一下外链的JS,外链的格式忘了的话也不用再百度了,下面给了:

		<script language="javascript" type="text/javascript" src="js/myphone.js"></script>

路径换成你们的就好,里面定义一些数组和公用方法,如:

		var phones = [	"iQOO_Neo3 8GB+128GB/144Hz高刷竞速屏 2998 ",
						"vivo_Z6_5G 6GB+128GB/骁龙765G 2298",
						"iQOO3_5G版 12GB+128GB/55W超快闪充 3998",
						"vivo_S6_5G版 双模5G/4500mAh大电池 2698",
						"iQOO_Pro_5G版 5G全网通/骁龙855 Plus 3298",
						"vivo_S5 菱感四摄/极点屏 1998",
						"vivo_Y50 5000mAh超强续航 1698",
						"vivo_U3x 6GB+64GB/大电池/双引擎 999",
						"NEX_3S_5G版 8GB+256GB/高通骁龙865 4998",
						"vivo_X30_5G版 双模5G全网通/20倍变焦 3298",
						"vivo_Z5 4500mAh大电池 1498"	];

		//初始化需要跳转的手机id
		var showphonenumber = -1;

		//转到手机详情界面方法,传入num值,打开新窗体时路径后加?id=num,以达到跨页面传值的效果
		//其中window.location.href为在本页面打开,window.open为在新页面打开
		function showphone(num){
			showphonenumber = num;
			window.location.href='phone.html?id='+showphonenumber; 
			//window.open('phone.html?id='+showphonenumber);
		}

当然了,示例的方法你用不到就不用复制,数组你们自己定义就好。

下面给两张样张图:
JS随手记——跨页面传值_第1张图片
这张就是没有id的,就是这个页面的框架,各个标签都等待修改值。

JS随手记——跨页面传值_第2张图片

这张就是有id的,按上述方法对各个标签分别重新定义的效果。

对了,还有一点,上面的addphonetip方法不要写在window.onload里,可以写在document.addEventListener里,当然你也不用再百度了,下面给了:

			//文档初始化事件,window.onload是表示文档结构已经加载完成(不包含图片等非文字媒体文件)
			if (document.addEventListener) {
			        document.addEventListener ("DOMContentLoaded", addphonetip, false);
			}

其中的第二个值就是方法名,第三个false我也不知道是什么,你可以改改试试,我没试过。

有同学就会问了,window.onload和document.addEventListener有什么区别?你也不用再百度了。

JS随手记——跨页面传值_第3张图片
大致就是window.onload需要所有内容都加载完毕之后再执行,而document.addEventListener不需要文档全部加载完成便可执行,说人话就是document.addEventListener更快。

结语:

全篇内容仅供参考,只是我这种小白能用这种方法实现,但不代表这种方法或这样使用的行为就是正确的。

如果你觉得对你有帮助就请点个赞,关注更好,嘿嘿,谢谢。如有描述错误或不足,还望指正。

你可能感兴趣的:(JS)