複数の製品を表示するための JavaScript 開発ショッピング カートのチュートリアル

複数の商品を表示する

上記で紹介した例は、class="shop2" div全体をコピーすると、+または-のどちらをクリックしても問題が発生します。これは、トリガー イベントがすべて最初のプロダクトを対象としており、普遍的ではないためです。したがって、この例を変換する必要があります

まず、関数内の関数を使用します。すべての変数は次のように渡されます。 parameters

//+ボタンを押す

function add(text,price,subtotal){

//現在のページ番号を取得

var num =document.getElementById( text).value;

//数量に 1 を追加し、数量を表示する <inpue> の value 属性に割り当てます

++num;

document.getElementById ( text).value=num;

//現在のページの数量を取得し、その数量を掛けて、小計が属するdivのページ表示コンテンツに割り当てます

varprice= document.getElementById(price). innerHTML;

var subtotal=price*num;

document.getElementById(subtotal).innerHTML=price*num;

}

// - ボタン

functionminus(text,price,subtotal){

var num=document.getElementById(text).value;

//数量が負の数かどうかを判断します

if(--num<1){

document.getElementById(text).value=0;

}else{

document.getElementById(text).value=num

}

//現在のページのコンテンツを取得します。数量を掛けた数量が、小計が属する div のページ表示コンテンツに割り当てられます

//num の再割り当ては、次の状況を配置することですnum=-1 が発生します

var num=document.getElementById(text). value;

varprice=document.getElementById(price).innerHTML;

document.getElementById(subtotal).innerHTML= Price*num;

}

他の 2 つの関数も同様です:

//ユーザーが <input> ボックス内の数値を変更すると、change() 関数がトリガーされます。カーソルがフォーカスを外した後

function change(text,price,subtotal){

/ /ユーザー入力が非数値かどうかを判断し、そうであればユーザーに通知します

if( isNaN(document.getElementById(text).value)){

alert("数字を入力してください");

document.getElementById(text).value=1;

}

// id="text" で入力ボックスの値を取得します

var num=document.getElementById(text).value;

// 商品の価格を取得します

varprice=document .getElementById(price).innerHTML;

//小計を出力します

document.getElementById(subtotal).innerHTML=price *num;

}

function delect(shop2){

// id="shop" の div を削除します

document.body.removeChild(document.getElementById(shop2));

}

次に、イベントがトリガーされたときに、2 つの製品に関係するすべての ID を異なる ID に変更します。値

完全なコードは次のとおりです

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 
 <meta name="format-detection" content="telephone=no" /> 
<title>简易购物车</title>
<meta charset="utf-8" />
<style>	
.shop{
	width:400px;
	background-color:#f0f0f0;
	text-align:center;
}
.shop2{
	text-align:center;
	clear:both;
	border:1px solid black;
    height:21px;
}
.goods{
	float:left;
	width:100px;
}	
.price{
	float:left;
	width:50px;
}	
.number{
	float:left;
	width:110px;
}	
.subtotal{
	float:left;
	width:50px;
	margin-top:2px;
}	
.delete{
	float:left;
	width:35px;
	margin-left:5px;
}	
.text{
	width: 22px;
	text-align:center;
}
</style>
<script >
//按下+按钮
function add(text,price,subtotal){
	//取出当前页面的数量
	var num=document.getElementById(text).value;
	//将数量加一然后再赋值给显示数量的<inpue>中的value属性
	++num;
	document.getElementById(text).value=num;
	//取出当前页面的数量,与数量相乘,赋值给小计所属的div的页面显示内容
	var price=document.getElementById(price).innerHTML;
	var subtotal=price*num;
	document.getElementById(subtotal).innerHTML=price*num;
}
//按下-按钮
function minus(text,price,subtotal){
	var num=document.getElementById(text).value;
	//判断数量是不是负数
	if(--num<1){
		document.getElementById(text).value=0;
	}else{
		document.getElementById(text).value=num
		}
	//取出当前页面的数量,与数量相乘,赋值给小计所属的div的页面显示内容
	//给num重新赋值是放置出现num=-1情况
	var num=document.getElementById(text).value;
	var price=document.getElementById(price).innerHTML;
	document.getElementById(subtotal).innerHTML=price*num;
}
//用户在<input>框中改变数字时,光标失焦后触发change()函数	
function change(text,price,subtotal){
	//判断用户输入的是否为非数字,是则提醒用户
	if(isNaN(document.getElementById(text).value)){
		alert("请输入数字");
		document.getElementById(text).value=1;
	}
	//取得id="text"的input框的value值
	var num=document.getElementById(text).value;
	//取得商品价格
	var price=document.getElementById(price).innerHTML;
	//将小计输出出去
	document.getElementById(subtotal).innerHTML=price*num;
}
function delect(shop2){
	//删除id="shop"的这个div
	document.body.removeChild(document.getElementById(shop2));
}
</script>
</head>
<body>
	<!--购物车标题-->
	<div class="shop">
		<div class="title">简易购物车</div>
		<div class="goods">商品</div>
		<div class="price">单价</div>
		<div class="number">数量</div>
		<div class="subtotal">小计</div>
		<div class="delete">操作</div>
	</div>
	<!--商品内容-->
	<div class="shop2" id="shop2">
		<form>
		<div class="goods">小米MIX </div>
		<div class="price" id="price2">5000</div>
		<div class="number">
			<input type="button" value="-" onclick="minus('text2','price2','subtotal2')"/>
			<input type="text" value="1" class="text" id="text2" onblur="change('text2','price2','subtotal2')"/>
			<input type="button" value="+" onclick="add('text2','price2','subtotal2')"/>
		</div>
		<div class="subtotal" id="subtotal2">5000</div>
		<div class="delete" onclick="delect('shop2')"><a href="#">删除</a></div>
		<form>
	</div>
	<div class="shop2" id="shop3">
		<form>
		<div class="goods">iphone 8 </div>
		<div class="price" id="price3">6000</div>
		<div class="number">
			<input type="button" value="-" onclick="minus('text3','price3','subtotal3')"/>
			<input type="text" value="1" class="text" id="text3" onblur="change('text3','price3','subtotal3')"/>
			<input type="button" value="+" onclick="add('text3','price3','subtotal3')"/>
		</div>
		<div class="subtotal" id="subtotal3">5000</div>
		<div class="delete" onclick="delect('shop3')"><a href="#">删除</a></div>
		<form>
	</div>
</body>
</html>

注: 私たちのページにはまだ多くの不完全な点があります。たとえば、更新すると、以前に選択された情報が初期化されなかったときのものになります。ユーザーの選択、全選択機能がない、商品写真の表示がないなど、次のバージョンで改善する予定です

学び続ける
||
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,
    user-scalable=no">
<meta name="format-detection" content="telephone=no" />
<title></title>
<meta charset="utf-8" />
<style>
.shop{
width:400px;
background-color:#f0f0f0;
text-align:center;
}
.shop2{
text-align:center;
clear:both;
border:1px solid black;
height:21px;
}
.goods{
float:left;
width:100px;
}
.price{
float:left;
width:50px;
}
.number{
float:left;
width:110px;
}
.subtotal{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
图片放大关闭