課程
/前端開(kāi)發(fā)
/JavaScript
/用JS實(shí)現(xiàn)購(gòu)物車(chē)特效
//這是我更正的完美demo,哈哈
2019-10-30
源自:用JS實(shí)現(xiàn)購(gòu)物車(chē)特效 2-12
正在回答
可以實(shí)現(xiàn)的,你自己的代碼有問(wèn)題吧。
window.onload=function(){
????var?cartTable=document.getElementById('cartTable');
????var?trs=cartTable.children[1].rows;
????var?checkInputs=document.getElementsByClassName('check');
????var?checkAllInputs=document.getElementsByClassName('check-all');
????var?checkOneInputs=document.getElementsByClassName('check-one');
????var?selectedTotal=document.getElementById('selectedTotal');
????var?priceTotal=document.getElementById('priceTotal');
????var?checkedAll=false;
????var?selected=document.getElementById('selected');
????var?foot=document.getElementById('foot');??
????var?selectedViewList=document.getElementById('selectedViewList');
????var?deleteAll=document.getElementById('deleteAll');
????
????function?checkall(){
????????for(var?a=0,len=checkOneInputs.length;?a<len;?a++){
????????????if(checkOneInputs[a].checked){
????????????????checkedAll=true;
????????????}else{
????????????????checkedAll=false;
????????????????break;
????????????}
????????}
????????for(var?j=0,len=checkAllInputs.length;?j<len;?j++){
????????????????checkAllInputs[j].checked=checkedAll;
????????????}?
????}
????function?getTotal(){
????????var?selected=0;
????????var?price=0;
????????var?_HTML='';
????????for(var?i=0,len=trs.length;?i<len;?i++){
????????????if(trs[i].getElementsByTagName('input')[0].checked){
????????????????trs[i].className='on';
????????????????selected+=parseInt(trs[i].getElementsByTagName('input')[1].value);
????????????????price+=parseFloat(trs[i].cells[4].innerText);
????????????????_HTML+='<div><img?src="'+trs[i].getElementsByTagName('img')[0].src+'"?alt=""?/><span?class="del"?index="'+i+'">取消選擇</span></div>'
????????????????trs[i].className='';????????????????
????????selectedTotal.innerText=selected;
????????priceTotal.innerText=price.toFixed(2);
????????selectedViewList.innerHTML=_HTML;
????????if(!selected){
????????????foot.className='foot';
????????checkall();
????function?getSubTotal(tr){
????????var?tds=tr.cells;
????????var?price=parseFloat(tds[2].innerText);
????????var?count=parseInt(tr.getElementsByTagName('input')[1].value);
????????var?SubTotal=parseFloat(price?*?count).toFixed(2);
????????tds[4].innerText=SubTotal;
????for(var?i=0,len=checkInputs.length;?i<len;?i++){????????
????????checkInputs[i].onclick=function(){
????????????if(this.className==='check-all?check'){
????????????????for(var?k=0,len=checkInputs.length;?k<len;?k++){
????????????????????checkInputs[k].checked=this.checked;
????????????????}
????????????if(!this.checked){
????????????????for(var?j=0,len=checkAllInputs.length;?j<len;?j++){
????????????????????checkAllInputs[j].checked=false;
????????????getTotal();
????for(var?i=0,?len=trs.length;?i<len;?i++){
????????
????????trs[i].onclick=function(e){
????????????var?el=e.srcElement;
????????????var?cls=el.className;
????????????var?input=this.getElementsByTagName('input')[1];
????????????var?val=parseInt(input.value);
????????????var?reduce=this.getElementsByClassName('reduce')[0];
????????????switch(cls){
????????????????case?'add':
????????????????????val+=1;????????????????????
????????????????????break;
????????????????case?'reduce':
????????????????????if(val>1){
????????????????????????val-=1;
????????????????????}
????????????????case?'delete':
????????????????????var?conf=confirm('確認(rèn)刪除嗎?');
????????????????????if(conf){
????????????????????????this.parentNode.removeChild(this);
????????????????default:
????????????if(val>1){
????????????????reduce.innerText='-';
????????????????reduce.innerText='';
????????????input.value=val;
????????????getSubTotal(this);
????????trs[i].getElementsByTagName('input')[1].onkeyup=function(){
????????????var?val=parseInt(this.value);
????????????var?that=this.parentNode.parentNode
????????????var?reduce=that.getElementsByClassName('reduce')[0];
????????????????val=1;
????????????this.value=val;
????????????getSubTotal(that);
????deleteAll.onclick=function(){
????????if(selectedTotal.innerText!='0'){
????????????var?conf=confirm('確認(rèn)全部刪除?');
????????????if(conf){
????????????????for(var?i=0,len=trs.length;?i<len;?i++){
????????????????????console.log(trs[i]);
????????????????????var?input=trs[i].getElementsByTagName('input')[0];
????????????????????if(input.checked){
????????????????????????trs[i].parentNode.removeChild(trs[i]);
????????????????????????len--;
????????????????????????i--;
????????????????????}????????????????
????????????????selectedTotal.innerText='0';
????????????????priceTotal.innerText='0.00';
????selected.onclick=function(){
????????if(foot.className==='foot'){
????????????if(selectedTotal.innerText!=0){
????????????????foot.className='foot?show';
????????????}????????????
????????}else{
????selectedViewList.onclick=function(e){
????????var?el=e.srcElement;
????????if(el.className=='del'){
????????????var?index=el.getAttribute('index');
????????????var?input=trs[index].getElementsByTagName('input')[0];
????????????input.checked=false;
????checkAllInputs[0].checked=true;
????checkAllInputs[0].onclick();
}
舉報(bào)
通過(guò)JavaScript實(shí)現(xiàn)類(lèi)似淘寶網(wǎng)絡(luò)購(gòu)物車(chē)功能效果
3 回答全選功能有問(wèn)題,如果反過(guò)來(lái),一個(gè)一個(gè)選擇后,全選卻沒(méi)有勾上,這是為什么
1 回答所有商品一個(gè)一個(gè)選中,全選也被選中怎么做
2 回答如果單選框全部選中,這個(gè)時(shí)候全選框也要被選中,這個(gè)如何實(shí)現(xiàn)?
2 回答有一個(gè)地方功能不完善吧?刪除所有選中的之后,foot中結(jié)算前的已選數(shù)量和總價(jià)應(yīng)該有所變化吧?
2 回答一個(gè)選擇框未選,應(yīng)該全選框選擇狀態(tài)消失,但是我的所有選擇框都消失,為什么呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2020-09-18
可以實(shí)現(xiàn)的,你自己的代碼有問(wèn)題吧。
2019-10-30
window.onload=function(){
????var?cartTable=document.getElementById('cartTable');
????var?trs=cartTable.children[1].rows;
????var?checkInputs=document.getElementsByClassName('check');
????var?checkAllInputs=document.getElementsByClassName('check-all');
????var?checkOneInputs=document.getElementsByClassName('check-one');
????var?selectedTotal=document.getElementById('selectedTotal');
????var?priceTotal=document.getElementById('priceTotal');
????var?checkedAll=false;
????var?selected=document.getElementById('selected');
????var?foot=document.getElementById('foot');??
????var?selectedViewList=document.getElementById('selectedViewList');
????var?deleteAll=document.getElementById('deleteAll');
????
????function?checkall(){
????????for(var?a=0,len=checkOneInputs.length;?a<len;?a++){
????????????if(checkOneInputs[a].checked){
????????????????checkedAll=true;
????????????}else{
????????????????checkedAll=false;
????????????????break;
????????????}
????????}
????????for(var?j=0,len=checkAllInputs.length;?j<len;?j++){
????????????????checkAllInputs[j].checked=checkedAll;
????????????}?
????}
????function?getTotal(){
????????var?selected=0;
????????var?price=0;
????????var?_HTML='';
????????for(var?i=0,len=trs.length;?i<len;?i++){
????????????if(trs[i].getElementsByTagName('input')[0].checked){
????????????????trs[i].className='on';
????????????????selected+=parseInt(trs[i].getElementsByTagName('input')[1].value);
????????????????price+=parseFloat(trs[i].cells[4].innerText);
????????????????_HTML+='<div><img?src="'+trs[i].getElementsByTagName('img')[0].src+'"?alt=""?/><span?class="del"?index="'+i+'">取消選擇</span></div>'
????????????}else{
????????????????trs[i].className='';????????????????
????????????}
????????}
????????selectedTotal.innerText=selected;
????????priceTotal.innerText=price.toFixed(2);
????????selectedViewList.innerHTML=_HTML;
????????if(!selected){
????????????foot.className='foot';
????????}
????????checkall();
????}
????function?getSubTotal(tr){
????????var?tds=tr.cells;
????????var?price=parseFloat(tds[2].innerText);
????????var?count=parseInt(tr.getElementsByTagName('input')[1].value);
????????var?SubTotal=parseFloat(price?*?count).toFixed(2);
????????tds[4].innerText=SubTotal;
????}
????for(var?i=0,len=checkInputs.length;?i<len;?i++){????????
????????checkInputs[i].onclick=function(){
????????????if(this.className==='check-all?check'){
????????????????for(var?k=0,len=checkInputs.length;?k<len;?k++){
????????????????????checkInputs[k].checked=this.checked;
????????????????}
????????????}
????????????if(!this.checked){
????????????????for(var?j=0,len=checkAllInputs.length;?j<len;?j++){
????????????????????checkAllInputs[j].checked=false;
????????????????}
????????????}
????????????getTotal();
????????}
????}
????for(var?i=0,?len=trs.length;?i<len;?i++){
????????
????????trs[i].onclick=function(e){
????????????var?el=e.srcElement;
????????????var?cls=el.className;
????????????var?input=this.getElementsByTagName('input')[1];
????????????var?val=parseInt(input.value);
????????????var?reduce=this.getElementsByClassName('reduce')[0];
????????????switch(cls){
????????????????case?'add':
????????????????????val+=1;????????????????????
????????????????????break;
????????????????case?'reduce':
????????????????????if(val>1){
????????????????????????val-=1;
????????????????????}
????????????????????break;
????????????????case?'delete':
????????????????????var?conf=confirm('確認(rèn)刪除嗎?');
????????????????????if(conf){
????????????????????????this.parentNode.removeChild(this);
????????????????????}
????????????????????break;
????????????????default:
????????????????????break;
????????????}
????????????if(val>1){
????????????????reduce.innerText='-';
????????????}else{
????????????????reduce.innerText='';
????????????}
????????????input.value=val;
????????????getSubTotal(this);
????????????getTotal();
????????}
????????trs[i].getElementsByTagName('input')[1].onkeyup=function(){
????????????var?val=parseInt(this.value);
????????????var?that=this.parentNode.parentNode
????????????var?reduce=that.getElementsByClassName('reduce')[0];
????????????if(val>1){
????????????????reduce.innerText='-';
????????????}else{
????????????????val=1;
????????????????reduce.innerText='';
????????????}
????????????this.value=val;
????????????getSubTotal(that);
????????????getTotal();
????????}
????}
????deleteAll.onclick=function(){
????????if(selectedTotal.innerText!='0'){
????????????var?conf=confirm('確認(rèn)全部刪除?');
????????????if(conf){
????????????????for(var?i=0,len=trs.length;?i<len;?i++){
????????????????????console.log(trs[i]);
????????????????????var?input=trs[i].getElementsByTagName('input')[0];
????????????????????if(input.checked){
????????????????????????trs[i].parentNode.removeChild(trs[i]);
????????????????????????len--;
????????????????????????i--;
????????????????????}????????????????
????????????????}
????????????????selectedTotal.innerText='0';
????????????????priceTotal.innerText='0.00';
????????????}
????????}
????}
????selected.onclick=function(){
????????if(foot.className==='foot'){
????????????if(selectedTotal.innerText!=0){
????????????????foot.className='foot?show';
????????????}????????????
????????}else{
????????????foot.className='foot';
????????}
????}
????selectedViewList.onclick=function(e){
????????var?el=e.srcElement;
????????if(el.className=='del'){
????????????var?index=el.getAttribute('index');
????????????var?input=trs[index].getElementsByTagName('input')[0];
????????????input.checked=false;
????????????getTotal();
????????}
????}
????checkAllInputs[0].checked=true;
????checkAllInputs[0].onclick();
}