会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132465个问题
人工智能/第十阶段:机器学习-Kaggle竞赛实战/药店销量预测案例 5416楼

请教老师,为什么跟着代码走,数量还是没有统计起来?

html代码:

<!DOCTYPE html>
<html>
	<head>
		<link rel="stylesheet" type="text/css" href="css/reset.css"/>
		<link rel="stylesheet" type="text/css" href="css/jd.css"/> 
		<link rel="stylesheet" type="text/css" href="icon/iconfont.css"/>
		<meta charset="utf-8" />
		<title>购物车</title>
		<script src="js/jd.js" type="text/javascript"></script>
	</head>
	<body>
		<!-- 导航开始 -->
		<div class="nav">
			<div class="warp">
				<ul class="nav_ul1">
					<li><a href="#"><i class="iconfont">&#xe663;</i>京东首页</a></li>
					<li><a href="#">配送至:北京</a></li>
				</ul>
				<ul class="nav_ul2">
					<li><a href="#">洋洋宝贝</a><span>|</span></li>
					<li><a href="#">我的订单</a><span>|</span></li>
					<li><a href="#">我的京东</a><span>|</span></li>
					<li><a href="#">京东会员</a><span>|</span></li>
					<li><a href="#">企业采购</a><span>|</span></li>
					<li><a href="#">京东手机</a><span>|</span></li>
					<li><a href="#">关注京东</a><span>|</span></li>
					<li><a href="#">客服服务</a><span>|</span></li>
					<li><a href="#">网站导航</a></li>
				</ul>
			</div>
		</div>
		<!-- 导航结束 -->
		
		<!-- 搜索框开始 -->
		<div class="search">
			<div class="warp">
				<img src="img/logo.jpg" >
				<div class="search_div">
					<input type="text" class="search_text" />
					<input type="button" value="搜索" class="search_button" />
				</div>
			</div>
		</div>
		<!-- 搜索框结束 -->
		
		<!-- 标题开始 -->
		<div class="title warp">
			<h3>全部商品</h3>
			<div>
				<span>配送至:</span>
				<select>
					<!-- <option >--请选择--</option> -->
					<option >朝阳区</option>
					<option >昌平区</option>
					<option >大兴区</option>
					<option >顺义区</option>
					<option >城东区</option>
				</select>
			</div>
		</div>
		<!-- 标题结束 -->
		
		<!-- 显示菜单的开始 -->
		<div class="tips warp">
			<ul>
				<li>
					<input type="checkbox" name="cname" id="all" onclick="checkTest1(this),checkTest2()" />
					全选
				</li>
				<li>商品</li>
				<li>单价</li>
				<li>数量</li>
				<li>小计</li>
				<li>操作</li>
			</ul>
		</div>
		<!-- 显示菜单的结束 -->
		
		<!-- 商品的展示开始 -->
		<!-- 商品1 -->
		<div class="info warp">
			<ul>
				<li class="info_1">
					<input type="checkbox" name="cname" onclick="checkTest2()"/>
				</li>
				<li class="info_2">
					<img src="img/img1.jpg" width="80px" height="80px" >
				</li>
				<li class="info_3"><a>【京东超市】desha春秋季儿童休闲服</a></li>
				<li class="info_4"><a>颜色: 灰色+粉红</a></li>
				<li class="info_5">182.5</li>
				<li class="info_6">
					<button onclick="checkTest3(this,1),checkTest2()">-</button>
					<input type="text" value="1" />
					<button id="bot" onclick="checkTest3(this,2),checkTest2()">+</button>
				</li>
				<li class="info_7">¥182.5</li>
				<li class="info_8">
					<a>删除</a>
					<br>
					<a>移到我的关注</a>
				</li>
			</ul>
		</div>
		<!-- 商品2 -->
		<div class="info warp">
			<ul>
				<li class="info_1">
					<input type="checkbox" name="cname" onclick="checkTest2()"/>
				</li>
				<li class="info_2">
					<img src="img/img2.jpg" width="80px" height="80px" >
				</li>
				<li class="info_3"><a>【京东超市】宏碁电脑·第6代智能英特尔@</a></li>
				<li class="info_4"><a>颜色: 灰色+粉红</a></li>
				<li class="info_5">182.5</li>
				<li class="info_6">
					<button onclick="checkTest3(this,1),checkTest2()">-</button>
					<input type="text" value="1" />
					<button id="bot" onclick="checkTest3(this,2),checkTest2()">+</button>
				</li>
				<li class="info_7">¥158.9</li>
				<li class="info_8">
					<a>删除</a>
					<br>
					<a>移到我的关注</a>
				</li>
			</ul>
		</div>
		<!-- 商品3 -->
		<div class="info warp">
			<ul>
				<li class="info_1">
					<input type="checkbox" name="cname" onclick="checkTest2()"/>
				</li>
				<li class="info_2">
					<img src="img/img3.jpg" width="80px" height="80px" >
				</li>
				<li class="info_3"><a>【京东超市】好孩子·婴儿橄榄柔护洗衣液</a></li>
				<li class="info_4"><a>颜色: 灰色+粉红</a></li>
				<li class="info_5">182.5</li>
				<li class="info_6">
					<button onclick="checkTest3(this,1),checkTest2()">-</button>
					<input type="text" value="1" />
					<button id="bot" onclick="checkTest3(this,2),checkTest2()">+</button>
				</li>
				<li class="info_7">¥182.5</li>
				<li class="info_8">
					<a>删除</a>
					<br>
					<a>移到我的关注</a>
				</li>
			</ul>
		</div>
		<!-- 商品的展示结束 -->
		
		<!-- 结算开始 -->
		<div class="balance warp">
			 <ul class="balance_ul1">
			 	<li>
					<input type="checkbox" name="cname" onclick="checkTest1(this),checkTest2()" />
					全选
				</li>
			 	<li>删除选中商品</li>
			 	<li>移到我的关注</li>
			 	<li>清除下柜商品</li>
			 </ul>
			 <ul class="balance_ul2">
			 	<li>已选择<span id="sum">0</span>件商品</li>
			 	<li>总价<span id="all_price">0</span></li>
			 	<li>
					<button>去结算</button>
				</li>
			 </ul>
		</div>
		<!-- 结算结束 -->
		
	</body>
</html>
<!-- 
	JS的变量
		var
		alert(): 输出语句形式
	JS中的数据类型
		number(数字类型的数据): 例:1,1.2;
		String(字符串类型): 例:'你',"我们";
		boolean(布尔类型): 例: true,false;
		Object(对象类型): 例: new Date();
	JS中特殊数据类型
		undefined(未定义)
		NaN(不是一个数字) Not a Number的简称
		Null(空对象) 例如:  var a = null;
 
 -->

js代码:

// 获得所有多选框的对象

var cname = document.getElementsByName("cname");

//判断是否全选操作

function checkTest1(th){

var flag = th.checked;

for(var i in cname){

cname[i].checked = flag;

}

}

// 单选决定全选

function checkTest2(){

// 勾选状态

var flag = true;

for(var i = 1;i < cname.length - 1; i++){

if(!cname[i].checked){

flag = false;

break;

}

}

// 从下标0开始计算

cname[0].checked = flag;

cname[cname.length - 1].checked = flag;

/* --------------------------------------------------- */

// 价格是否统计

var total_price = 0;

// 统计是否有勾选对象

var num = 0;

// 统计商品的数量

var com_all_num = 0;

for( var i = 1; i < cname.length - 1;i++){

if(cname[i].checked){

num++;

// 获得ul的父节点

var par = cname[i].parentNode.parentNode;

// 获得指定ul里面的所有的li

var li = par.getElementsByTagName("li");

// 单个商品的价格

var odd_price = li[6].innerHTML.split("¥")[1];

// 获得所有商品的总价格

total_price += Number(odd_price);

var all_p = document.getElementById("all_price").innerText = total_price;

//获得商品的数量

var com_num = li[5].document.getElementsByTagName("input");

var sp_num = com_num[0].value; // 获得input里的数量值

com_all_num += Number(sp_num);

// 获得商品数量统计的对象

document.getElementById("sum").innerText = com_all_num;

}

}

if(num == 0){

document.getElementById("all_price").innerText = 0;

document.getElementById("sum").innerText = 0;

}

}



// 控制数量的增加和减少

function checkTest3(th,sig){

var pre;

if(sig == "1"){

// 获得下一个节点

pre = th.nextElementSibling;

if(Number(pre.value) > 0){

// 获得节点的value值

pre.value = Number(pre.value) - 1;

}

}else{

// 获得上一个节点

pre = th.previousElementSibling;

// 获得节点的value值

pre.value = Number(pre.value) + 1;

}

// 计算每一个商品总的价格

// 获得每一个商品的单价

var val = pre.parentNode.previousElementSibling.innerHTML;

// 计算总价格

var total = Number(val)*Number(pre.value);

// 把总价格赋值给指定对象

pre.parentNode.nextElementSibling.innerHTML = "¥"+total;

}

运行截图:

image.png

JAVA 全系列/第四阶段:网页编程和设计/Javascript 语言(旧) 5417楼
Python 全系列/下架-第十二阶段:Python_大型电商项目(5天后下架)/Django项目阶段-电商项目(旧) 5419楼
JAVA 全系列/第四阶段:网页编程和设计/Javascript 语言(旧) 5421楼

1.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>webxiaode的网页</title>
    <link rel="stylesheet" href="./css/reset.css" />
    <link rel="stylesheet" href="./css/mi.css" />
    <link rel="stylesheet" href="./css/iconfont/iconfont.css" />
  </head>

  <body>
    <!-- 头部开始 -->
    <div class="header">
      <a href="#">
        <img src="./images/top.jpg" alt="" />
      </a>
    </div>
    <!-- 头部结束 -->
    <!-- 黑色导航部分开始 -->
    <!--黑色导航步骤:
            1.主容器.背景颜色
            2.内容部分居中显示,容器处理
            3.左导航,右导航
            4.动画
    -->
    <div class="black-nov">
      <div class="wrop">
        <ul class="black-nov-left">
          <li><a href="#">小米商城</a><span>|</span></li>
          <li><a href="#">MIUI</a><span>|</span></li>
          <li><a href="#">lOT</a><span>|</span></li>
          <li><a href="#">云服务</a><span>|</span></li>
          <li><a href="#">天星科技</a><span>|</span></li>
          <li><a href="#">有品</a><span>|</span></li>
          <li><a href="#">小爱开发平台</a><span>|</span></li>
          <li><a href="#">企业团购</a><span>|</span></li>
          <li><a href="#">资质证照</a><span>|</span></li>
          <li><a href="#">协议规则</a><span>|</span></li>
          <li>
            <a href="#">下载APP</a><span>|</span>
            <div class="download">
              <img src="./images/download.png" alt="" />
              <p>小米商城APP</p>
            </div>
            <div class="stri"></div>
          </li>
          <li><a href="#">智能生活</a></li>
          <li><a href="#">SelectLocation</a></li>
        </ul>
        <ul class="black-nav-right">
          <li><a href="#">登录</a><span>|</span></li>
          <li><a href="#">注册</a><span>|</span></li>
          <li><a href="#">消息通知</a><span>|</span></li>
          <li class="cart">
            <a href="#"> <span class="iconfont">&#xe607;</span>购物车(0)</a>
            <div class="cart-list">购物车中还没有商品,赶紧选购吧!</div>
          </li>
        </ul>
      </div>
    </div>
    <!-- 黑色导航部分结束 -->
  </body>
</html>

2.css样式
* {
  margin: 0;
  padding: 0;
}
/*头部样式开始*/
.header {
  width: 100%;
  height: 120px;
  overflow: hidden;
  position: relative;
}

.header img {
  height: 120px;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}
/*头部样式结束*/


/*黑色导航开始*/
.black-nov {
  width: 100%;
  height: 40px;
  line-height: 40px; /*行高为40px*/
  background-color: #333;
  font-size: 12px; /*设置字体大小*/
}/*导航部分*/

.wrop {
  width: 1226px;
  margin: 0 auto;
}

.black-nov-left {
  float: left;
}

.black-nov-right {
  float: right;
}

.black-nov li {
  float: left; /*字体浮动居左*/
  position: relative; /*相对定位*/
}

.black-nov a {
  color: #b0b0b0;
}

.black-nov span {
  color: #424242;
  margin: 0 3.6px;
}

.download {
  width: 124px;
  height: 0;
  background: #fff;
  box-shadow: 0 1px 5px #aaa;
  position: absolute; /*绝对定位*/
  top: 40px;
  left: 50%;
  margin-left: -62px;
  overflow: hidden; /*消除浮动*/
  transition: all 0.3s; /*过渡所有属性*/
}

.download img {
  width: 90px;
  margin: 18px auto 0;
}

.download p {
  color: #333;
  font-size: 14px;
  line-height: 14px;
}

.black-nov-left li:hover > .download {
  height: 148px;
}

.stri {
  width: 0;
  height: 0;
  border-bottom: 8px solid #fff;
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
  position: absolute; /*绝对定位*/
  bottom: 0;
  left: -50%; /*左右居中*/
  margin-left: 46px;
  display: none; /*默认没有*/
}

.black-nov-left li:hover > .stri {
  display: block;
} /*让它出现*/

.cart {
  width: 120px;
  高度: 40px;
  margin-left: 25px;
  background: #424242;
  position: relative;
}

.cart span{
  color: #b0b0b0;
}

.cart:hover {
  background: #fff;
}

.cart a:hover{
  color: #ff6700;
}

.cart-list {
  width: 316px;
  height: 0;
  background: #fff;
  box-shadow: 0 2px 10px rgb(0, 0, 0,0.15);
  position: absolute; /*绝对定位*/
  top: 40px;
  right: 0;
  颜色 : #424242;
  overflow: hidden; /*消除浮动*/
  transition: all 0.3s; /*过渡所有属性*/
  行高:100px;
}

.cart:hover>.cart-list{
  高度: 100px;
}
/*黑色导航结束*/

问题:左边导航和右边导航连接在一起了,怎么解决啊

1648288891(1).png

WEB前端全系列/第一阶段:HTML5+CSS3模块/商城官网项目 5422楼

/* 黑色导航开始 */
.black-nav{
 width: 100%;
 height: 40px;
 background-color: #333;  
 line-height: 40px;
 
}
.wrap{
    width: 1226px;
    margin: 0 auto;
    /* position: relative; */
}
.left-nav{
    float: left;
}
.right-nav{
    float: right;
}
.black-nav li{
    float: left;
    position: relative;
}
.black-nav a{
    color: #b0b0b0;
    font-size: 12px;
}
.black-nav span{
    color: #424242;
    margin: 0 3.6px;
}
.black-nav a:hover{
    color: #fff;
}
.download{
    width: 124px;
    height: 0;
    background-color: #fff;
    position:absolute;
    top: 40px;
    left: -50%;
    display: none;
    box-shadow: 0 1px 5px #333 ;
    transition: all 0.5s;
    /* margin-left: -62px; */
}
.download img{
    width: 90px;
    margin: 18px auto 0;
}
.left-nav li:hover>.download{
    height: 148px;
    display: block;
   
}
.download p{
    color: #424242;
    font-size: 14px;
    line-height: 14px;
}
.triangle{
    width: 0;
    height: 0;
    border-bottom: 8px solid #fff;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    position: absolute;
    bottom: 0px;
    right: 50%;
    margin-left: -8px;
    display: none;
}
.left-nav li:hover>.triangle{
    display: block;
}
.cart{
    width: 120px;
    height: 40px;
    background: #424242;
    margin-left: 20px;
}
.cart span{
    color: #b0b0b0;
}
.cart:hover{
    background: #fff;
}
.cart:hover>a{
    color: #ff6700;
}
.cart i{
    font-style: normal;
    padding-left: 5px;
    position: relative;
}
.cart-1{
    width: 320px;
    height: 0px;
    position: absolute;
    top: 40px;
    right: 0;
    box-shadow: 0 1px 5px rgba(0,0,0,0.2);
    transition: all 0.5s;
    line-height: 100px;
}
.cart:hover>.cart-1{
    height: 100px;
}

/* 黑色导航结束 */

/* 白色导航开始 */
.withe-nav{
    width: 100%;
    height: 100px;
    background: #fff;
    position: relative;
    clear: both;
    line-height: 100px;
}
.logo{
    float: left;
}
.white-left-nav{
    width: 850px;
    float: left;
}
.white-right-nav{
    width: 296px;
    float: right;
}
.logo{
    width: 56px;
    height: 56px;
    margin-top: 22.5px;
}
.logo img{
    width: 56px;
    height: 56px;
    left: 0;
}
.white-left-nav li{
    padding: 5px 0 0 30px;
    float: left;
    box-sizing: border-box;
}
.white-left-nav li a{
    color: #333;
    font-size: 16px;
}
.white-left-nav>ul>li>a:hover{
    color: #ff6700;
}
.white-left-nav ul{
    margin-left: 113px;
}
.white-right-nav input{
    width: 244px;
    height: 50px;
    line-height: 50px;
    padding: 0 10px;
    font-size: 14px;
    box-sizing: border-box;
    border: 1px solid #e0e0e0;
    margin-top: 25px;
}
.white-right-nav button{
    width: 52px;
    height: 50px;
    font-size: 24px;
    line-height: 50px;
    background-color: #fff;
    color: #616161;
    box-sizing: border-box;
    border: 1px solid #e0e0e0;
    border-left: 0;
    margin-top: 25px;
    float: right;
}
.white-right-nav button:hover{
    background-color: #ff6700;
    color: #fff;
}
.item{
    width: 100%;
    height: 229px;
    position: absolute;
    top: 100px;
    left: 0;
}



/* 白色导航结束 */


WEB前端全系列/第一阶段:HTML5+CSS3模块/商城官网项目 5424楼
Python 全系列/第五阶段:数据库编程/python操作mysql(旧) 5426楼

问题一:

老师,我想在点击新增一行这个按钮时新增的一行可以自定义书名,作者,数量,但是我发现我写的代码只能自定义书名和作者,而且数量随着书名和作者的值变化而变化,如果先在书名里面写张三那么数量也变为张三,然后在作者里面写李四,这时候数量又变成了李四,老师这个我该怎么解决


问题二:

我在书名,作者和数量的input里面都调用了失去焦点的方法,为什么只有数量可以成功调用,写完之后鼠标点击其他地方文本框边框消失,而作者和书名却不行


问题动图如下:


GIF.gif



源码如下:


html:

<html>
	<head>
		<title>jQuery操作表格</title>
		<meta charset="UTF-8"/>
		<!--声明css代码域-->
		<style type="text/css">
			tr{
				height: 40px;
			}
		</style>
	 
	 	<script src="js/jquery-1.9.1.js" type="text/javascript" charset="utf-8"></script>
		
		<script src="js/gwc.js"	type="text/javascript" charset="UTF-8"></script>
		
	</head>
	<body>
		<h3>jQuery操作表格</h3>
		<hr />
		<input type="button" id="fx" value="反选" />
		<input type="button" id="addRow" value="新增一行" />
		<input type="button" id="delRow" value="删除行" />
		<input type="button" id="copyRow" value="复制行" />
		<table border="1px" cellpadding="10px" cellspacing="0" id="ta">
			<tr>
				<td width="50px"><input type="checkbox" name="chks" id="chks" value="1" /></td>
				<td width="200px">书名</td>
				<td width="200px">作者</td>
				<td width="200px">数量</td>
				<td width="200px">操作</td>
			</tr>
			<tr id="">
				<td><input type="checkbox" name="chk" id="" value="2"/></td>
				<td>《Java编程之道》</td>
				<td>wollo</td>
				<td>10</td>
				<td>
					<input type="button" name="aa" id="" value="修改数量"  onclick="change(this)"/>
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>
			<tr>
				<td><input type="checkbox" name="chk" id="" value="3" /></td>
				<td>《Python和我的故事》</td>
				<td>赵老师</td>
				<td>10</td>
				<td>
					<input type="button" name="" id="" value="修改数量" onclick="change(this)"/>
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>
			<tr>
				<td><input type="checkbox" name="chk" id="" value="4" /></td>
				<td>《web开发详解》</td>
				<td>张老师</td>
				<td>30</td>
				<td>
					<input type="button" name="" id="" value="修改数量" onclick="change(this)"/>
					<input type="button" name="" id="" value="删除" onclick="del(this)"/>
				</td>
			</tr>			
		</table>
	</body>
</html>


JS:

$(function(){
	
	//确定全选和全部不选操作
	
	$("#chks").click(function(){
		
		var flag = $(this).prop("checked");//返回布尔类型
		
			$("input[name=chk]").prop("checked",flag);//让所有内容都选中

	})
	
	//判断是否全选的操作
	$("input[name=chk]").click(function(){
		
		var flag = true;
		
		var chk = $("input[name=chk]");
		
		//each:遍历		每次遍历执行funaction 里面的内容
		chk.each(function(){
			
			if(!$(this).prop("checked")){
				
				flag = false;
				
				return;
			}
			
		})
		
		$("#chks").prop("checked",flag);
		
	})
	
	//反选的操作
	$("#fx").click(function(){
		
		//拿到所有的多选框
		var chx = $("input[name=chk]");
		
		//遍历
		chx.each(function(){
			
			//获得每个多选框的初始状态
			var flag = $(this).prop("checked");
			
			//现有状态与原始状态进行取反
			$(this).prop("checked",!flag);
		})
	})
	
	//新增加一行的操作
	$("#addRow").click(function(){
		
		//获得tab对象
		var tab = $("#ta");
		
		tab.append('<tr id="">'+
				'<td><input type="checkbox" name="chk" id="" value="2"/></td>'+
				'<td><input type="text"	onblur="bul(this)"/></td>'+
				'<td><input type="text"	onblur="bul(this)"/></td>'+
				'<td><input type="text"	onblur="bul(this)"/></td>'+
				'<td>'+
					'<input type="button" name="aa" id="" value="修改数量"  onclick="change(this)"/>&nbsp'+
					'<input type="button" name="" id="" value="删除" onclick="del(this)"/>'+
				'</td>'+
			'</tr>');
		
	})
	
	//删除的操作
	$("#delRow").click(function(){
		
		//获得被选中的name=chk的单选框
		var del = $("input[name=chk]:checked");
		
		if(del.length==0){//如果一行没选
			alert("至少选择一行!");
		}else{
			
			//执行删除整行的操作	单选框的父节点是	td	,	td	的父节点是	tr
			del.parent().parent().remove();
		}
		
	})
	
	//复制行		选中几个复制几个
	$("#copyRow").click(function(){
		
		//获得被选中的name=chk的多选框
		var copy = $("input[name=chk]:checked");
		
		if(copy.length==0){//如果一行没选
			alert("至少选择一行!");
		}else{
			//执行copy的操作
			
			//复制
			var tr = copy.parent().parent().clone();//克隆整行
			//黏贴
			$("#ta").append(tr);
			
		}
	})
	
})

//修改数量的操作

function change(th){//这里的this是JS类型的,得转换成JQ对象
	
	//$(th):转换成JQ对象		获得	tr	结点
	var par = $(th).parent().parent();
	
	//将写死的数量变成可以定义的文本框
	par.children().eq(3).html("<input	type='text' size='3px' onblur='bul(this)'/>");
}

function bul(th){
	
	var par = $(th).parent().parent();
	
	par.children().eq(3).html(th.value);//或者转成JQ对象再调用val来获得值
}

function del(th){
	
	var par = $(th).parent().parent();
	
	par.remove();
	
}


JAVA 全系列/第四阶段:网页编程和设计/Jquery(旧) 5429楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637