黑马程序员-DOM(第五讲)

本文详细介绍了如何在网页中实现表格的样式设置、行颜色间隔显示与高亮效果、鼠标悬停时的高亮反应,以及表格数据的排序功能,并通过JavaScript与CSS结合展示了全选商品列表和总金额计算的实现。

表格在页面中的一些体现

实现效果:行颜色间隔显示并高亮

<table>

<tr>

<th>姓名</th>

<th>年龄</th>

<th>地址</th>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

<tr>

<td>张三</td>

<td>27</td>

<td>上海</td>

</tr>

 

 

</table>

 

写一个样式表,为表格,行,添加样式

table.css

table{

border:#249bdb 1px solid;

width:500px;

border-collapse:collapse;

}

table td{

border:#249bdb 1px solid;

paddding:10px;

}

table th{

border:#249bdb 1px solid;

paddding:10px;

background-color:rgb(200,200,200);

}

 

定义两个类选择器,使得相邻两行的背景不同,以示区分

<script type=text/javascript>

function trColor(){

//思路:

因为要操作行的样式,所以要先获取表格对象,

然后获取所有被操作的行对象

遍历行并给每一行指定样式

var oTabNode=docummnet.getElementById(info);

//获取表格中的所有行

var collTrNodes=oTabNode.rows;

//遍历的时候从第二行开始

for(var x=1;x<collTrNodes.length;x++)

{

if(x%2==1)

{

collTrNodes[x].className=one;

}

else

{

collTrNodes[x].className=two;

}

}

 

}

 

onload=function(0

{

trColor();

};

</script>

 

这样做完之后,怎么样实现高亮效果呢?就是当鼠标移到每一行上时,发亮,移出时,恢复原状

 

这就需要为没一行对象添加两个事件

在上面的for语句中

 

collTrNodes[x].onmouseover=function(){

name=this.className;//记录下每行的原状态,以便恢复

this.className=over;

}

collTrNodes[x].onmuseout=function(){

this.className=name;

}

 

<style type=text/css>

.one{

background-color:#e1e16a;

}

.two{

background-color:#75f094;

}

.over{

background-color:#8deffa;

}

</style>

 

三、表格排序

 

<th><a href=javascript:void(0) onclick=sortTable()>年龄</a></th>

<a>标签设定属性

<style type=text/css>

th a:link,th a:visited{

color:#279bda;

text-decoration:none;//去掉超链接的下划线

}

</style>

 

<script type=text/javascript>

function sortTable()

{

//思路:

1、排序就需要数组,获取需要参与排序的行对象数组

2、对行数组中的每一个行的年龄单元格的数据进行比较,并完成行对象在数组中的位置置换

3、将排好序的数组重新添加回表格

 

//首先得到table节点(tableidinfo)

var oTabNode=document.getElementById(info);

var collTrNodes=oTabNode.rows;

//定义一个临时容器,存贮需要排序的行对象

var trArr=[];

//遍历原行集合,并将需要排序的行对象存储到容器中

for(var x=1;x<collTrNodes.length;x++)

{

trArr[x-1]=collTrNodes[x];

}

//对临时容器排个序

mySort(trArr);

//将排完序的行对象添加进表格

for(var x=0;x<trArr.length;x++)

{

trArr[x].parentNode.appendChild(trArr[x]);

}

 

 

function mySort(arr)

{

for(var x=0;x<arr.length;x++)

{

for(var y=x+1;y<ar.length;y++)

{

if(parseInt(arr[x].cells[1].innerHTML)>parseInt(arr[y].cells[1].innerHTML))

{

var temp=arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

}

}

}

 

}

</script>

 

四、全选商品列表

 

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

<input type=checkbox name=item value=4000/>笔记本电脑,3000</br>

 

<input type=button value=总金额 onclick=getSum()>

<span id=sumid />

 

<script type=text/javascript>

function getSum()

{

//获取所有名称为item的复选框,判断checked状态,为true表示被选中,获取该节点的value进行累计

var sum=0;

var collItemNodes=document.getElementsByName(item);

for(var x=0;x<collItemNodes.length;x++)

{

if(collItemNodes[x]checked)

{

sum+=parseInt(collItemNodes[x].value);

}

}

documet.getElementById(sumid).innerHTML=sum;

}

</script>

 

弄个全选

<input type=checkbox name=allitem onclick=checkAll(this)/>全选

 

function checkAll(node)

{

//原理,将allitem的状态赋值给所有的item的状态

var collItemNodes=document.getElementsByName(item);

For(var x=0;x<collItemNodes.length;x++)

{

collItemNodes[x].checked=node.checked;

}

 

} 
### Vue.js 黑马程序员 第四章 课后习题 解答 或 内容 根据用户的需求,以下是关于 Vue.js 黑马程序员第四章课后习题的内容和解答。内容主要围绕动态组件、页面切换以及相关实现展开。 #### 动态组件的实现 在 Vue.js 中,可以通过 `component` 元素结合 `v-bind:is` 属性来实现动态组件的切换[^2]。以下是一个简单的示例代码: ```vue <template> <div id="app"> <button @click="currentComponent = 'Login'">登录</button> <button @click="currentComponent = 'Register'">注册</button> <component :is="currentComponent"></component> </div> </template> <script> import Login from './components/Login.vue'; import Register from './components/Register.vue'; export default { name: 'App', components: { Login, Register }, data() { return { currentComponent: 'Login' }; } }; </script> ``` #### 登录页面和注册页面的实现 按照题目要求,需要编写一个登录页面和一个注册页面,并通过动态组件实现页面切换。以下是具体的实现步骤: 1. 创建两个 Vue 组件:`Login.vue` 和 `Register.vue`。 2. 在主文件中引入这两个组件,并使用动态组件进行切换。 ##### 登录页面 (`Login.vue`) ```vue <template> <div> <h2>登录页面</h2> <input type="text" placeholder="用户名" /> <input type="password" placeholder="密码" /> <button>登录</button> </div> </template> ``` ##### 注册页面 (`Register.vue`) ```vue <template> <div> <h2>注册页面</h2> <input type="text" placeholder="用户名" /> <input type="password" placeholder="密码" /> <input type="password" placeholder="确认密码" /> <button>注册</button> </div> </template> ``` #### Vue.js 相关知识点解析 以下是与课后习题相关的 Vue.js 核心知识点解析: 1. **动态组件** 动态组件通过 `<component>` 标签和 `:is` 属性实现,允许在运行时切换不同的组件[^2]。 2. **组件间通信** Vue 提供了多种组件间通信的方式,包括 Props、Events、Provide/Inject 等[^3]。 3. **响应式系统** Vue 的响应式系统基于对象的 `getter` 和 `setter`,当数据发生变化时会触发视图更新[^3]。 4. **生命周期钩子** Vue 组件拥有完整的生命周期,常见的钩子函数包括 `created`、`mounted`、`updated` 和 `destroyed` 等[^3]。 5. **虚拟 DOM** 虚拟 DOM 是 Vue 实现高效 DOM 更新的核心机制,通过 diff 算法计算最小差异并应用到真实 DOM 上。 #### 示例代码总结 通过上述代码和知识点解析,可以完成 Vue.js 黑马程序员第四章课后习题的要求。动态组件的实现是该章节的重点之一,同时还需要理解 Vue 的响应式系统和生命周期等基础概念。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值