关于使用innerHTML属性插入大量代码(有换行)

问题环境:

由于想创建一个能够自适应窗口的网站,所以想着html结构能够动态改变,因为需要大刀阔斧的改动,所以选择了innerHTml,然而在使用过程中却出现了问题

代码:

html源代码:

<div id="plat_container_1">
</div>

预想插入后的代码:

<div id="plat_container_1">
	<div class="change_plat" id="div_plat">
		<div class="plat">
			<div class="num num_1">
				<p>Microsoft</p>
				<a href="#">XBOX 360</a>
				<a href="#">XBOX ONE</a>
			</div>
			<div class="num num_2">					
				<p>PlayStation</p>
				<a href="#">PlayStation 3</a>
				<a href="#">PlayStation 4</a>
				<a href="#">PlayStation Vita</a>
			</div>
		</div>
	<a href="#"><div class="num num_special"><span>Retor Console</span></div></a>
</div>

踩坑过程:

原本想着,一下子全放入innerHTML中,然而直接出现错误,""无法处理换行,于是将其全部放在一行上

于是将其分开插入其中,运行时无错误,然而打开后却发现之前的css样式无效.经过反复排查后,发现错误原因是浏览器自动处理了错误(它认为的),自动添加了代码.

js代码:

var plat_1 = document.getElementById('plat_container_1');
		plat_1.innerHTML = "";
		plat_1.innerHTML += '<div class="change_plat" id="div_plat">';
		plat_1.innerHTML += '<div class="plat">';
		plat_1.innerHTML += '<div class="num num_1">';
		plat_1.innerHTML += '	<p>Microsoft</p>';
		plat_1.innerHTML += '	<a href="#">XBOX 360</a>';
		plat_1.innerHTML += '	<a href="#">XBOX ONE</a>';
		plat_1.innerHTML += '</div>';
		plat_1.innerHTML += '<div class="num num_2">';			
		plat_1.innerHTML += '	<p>PlayStation</p>';
		plat_1.innerHTML += '	<a href="#">PlayStation 3</a>';
		plat_1.innerHTML += '	<a href="#">PlayStation 4</a>';
		plat_1.innerHTML += '	<a href="#">PlayStation Vita</a>';
		plat_1.innerHTML += '</div>';
		plat_1.innerHTML += '<a href="#"><div class="num num_special"><span>Retor Console</span></div></a>';
		plat_1.innerHTML += '</div>';

实际上,浏览器处理后的代码:

<div id="plat_container_1">
	<div class="change_plat" id="div_plat"></div>
		<div class="plat"></div>
			<div class="num num_1"></div>
				<p>Microsoft</p>
				<a href="#">XBOX 360</a>
				<a href="#">XBOX ONE</a>
			<div class="num num_2"></div>	
				<p>PlayStation</p>
				<a href="#">PlayStation 3</a>
				<a href="#">PlayStation 4</a>
				<a href="#">PlayStation Vita</a>
	<a href="#"><div class="num num_special"><span>Retor Console</span></div></a>

最终处理方式:

其实处理方式很简单,大量代码插入时,只需在每行后多写一个"",即可解决""无法处理换行的问题
真确的代码:

var plat_1 = document.getElementById('plat_container_1');
	plat_1.innerHTML = '<div class="change_plat" id="div_plat">\
						<div class="plat">\
							<div class="num num_1">\
								<p>Microsoft</p>\
								<a href="#">XBOX 360</a>\
								<a href="#">XBOX ONE</a>\
							</div>\
							<div class="num num_2">\
								<p>PlayStation</p>\
								<a href="#">PlayStation 3</a>\
								<a href="#">PlayStation 4</a>\
								<a href="#">PlayStation Vita</a>\
							</div>\
							<div class="num num_3">\
								<p>Nintendo</p>\
								<a href="#">3DC</a>\
								<a href="#">Wiiu</a>\
								<a href="#">Wii</a>\
								<a href="#">Switch</a>\
							</div>\
							<div class="num num_4">\
								<p>Others</p>\
								<a href="#">PC</a>\
								<a href="#">Mobile</a>\
							</div>\
						</div>\
						<a href="#"><div class="num num_special"><span>Retor Console</span></div></a>\
					</div>';
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值