web前端学习(二)html学习笔记部分(3)--range对象
1.2.8 html5编辑api之range对象(一)
1.2.8.1 Range 对象基本概念
Range 对象的基本概念,通过使用 Range 对象所提供的方法实现一个鼠标选取内容,通过点击按钮打印出选中内容,当然注意在不同的浏览器下可选中的内容数量是不同的。
<script>
function rangeTest() {
var html;
showRangeDiv = document.getElementById("showRange");
selection = document.getSelection();
if(selection.rangeCount > 0){
html = "您选取了" + selection.rangeCount + "块内容<br/>"
for(var i = 0; i < selection.rangeCount; i++){
var range = selection.getRangeAt(i);
html += "第" +(i+1) + "段内容为:" + range + "<br/>"
}
showRangeDiv.innerHTML = html;
}
}
// chrome浏览器中只能选取一块内容,火狐浏览器中可以通过按command键
// 选取多块选区。
</script>
select对象与Range对象的使用
<input type="button" value="点击我" onclick="rangeTest()">
<div id="showRange"></div>
<hr/>
1.2.8.2 Range方法之SelectNode等方法
Range 对象方法,包含 SelectNode、SelectNodeContents、deleteContents 方法,通过实例来了解每一个方法的使用。
<script>
function deleteRangeContent(onlyContent){
var div = document.getElementById("divTest");
var rangeObj = document.createRange();
if(onlyContent){
rangeObj.selectNodeContents(div);
//直选中节点内的内容;
rangeObj.deleteContents();
//删除选中的内容;
}else{
rangeObj.selectNode(div);
//选中整个节点
rangeObj.deleteContents();
}
}
</script>
<div id="divTest" style=" width: 200px; height: 100px;">元素中的内容</div>
<button onclick="deleteRangeContent(true)" >删除内容</button>
<button onclick="deleteRangeContent(false)" >删除元素</button>
<!--button标签没有value属性,使用了不管用,input类型为button之后才有value属性-->
1.2.8.3 Range方法之setStartsetEnd等方法
Range 对象方法,包含 setStart、setEnd、setStartBefore、setStartAfter、setEndBefore、setEndAfter 方法。
<script>
function deleteChar(){
var div = document.getElementById("myDiv");
// var textNode = div.firstChild;
var textNode = div.firstChild;
//firstChild返回的是一个节点,内容是一段字符
var rangeObj = document.createRange();
rangeObj.setStart(textNode,1);
//数字1是偏移量
rangeObj.setEnd(textNode,2);
rangeObj.deleteContents(); }
</script>
<div id="myDiv"style="color:red">这段文字是用来测试删除的
</div>
<!--setStart会识别初div中的空格,卧槽。。。半个小时搞这个。。。醉了
而且节点是从0开始的,一个汉字就是一个节点-->
<button onclick="deleteChar()">删除文字</button>
<script>
function deleteRow() {
var table = document.getElementById("myTable");
if(table.rows.length > 0){
var row = table.rows[0];
var rangeObj = document.createRange();
rangeObj.setStartBefore(row);
rangeObj.setEndAfter(row);
//顾名思义看英语
rangeObj.deleteContents();
}
}
</script>
<table id="myTable" border="5px" cellpadding="0" cellspacing="10">
<!--cellpadding:表格内部文字与单个表格边框的距离
cellspacing:table的边界内部与内容的距离-->
<tr>
<td>内容1</td>
<td>内容2</td>
</tr>
<tr>
<td>内容3</td>
<td>内容4</td>
</tr>
</table>
<button onclick="deleteRow()">删除第一行</button>
1.2.9 HTML5 编辑 API 之 Range 对象(二)
1.2.9.1 Range 对象方法
通过使用 Range 对象的方法来进行复制、追加、克隆等操作。通过简单地标签,来了解 Range 对象提供的方法的使用。
克隆range对象
<script>
function cloneRange(){
var rangeObj = document.createRange();
rangeObj.selectNodeContents(document.getElementById("p"));
var rangeClone = rangeObj.cloneRange();
alert(rangeClone.toString());
}
</script>
<p id="p">这是随便书写的一段内容</p>
<button onclick="cloneRange()">克隆</button>
克隆内容
<script>
function cloneContent(){
var div = document.getElementById("div");
var rangeObj = document.createRange();
rangeObj.selectNodeContents(div);
var docFrangment = rangeObj.cloneContents();
div.appendChild(docFrangment);
}
</script>
<div id="div">这是随便书写的一段内容
<br/>
<button onclick="cloneContent()">克隆</button>
<br/>
</div>
移动内容
<script>
function moveContent(){
var srcDiv = document.getElementById("srcDiv");
var disDiv = document.getElementById("disDiv");
var rangeObj = document.createRange();
rangeObj.selectNodeContents(srcDiv);
var docFragment = rangeObj.extractContents();
disDiv.appendChild(docFragment);
// 将srcDiv中的元素移动到disDiv中;
}
</script>
<div id="srcDiv" style="width:300px;height:20px;">你好吗?</div>
<div id="disDiv" style="width:300px;height:20px;"></div>
<button onclick="moveContent()">移动</button>
1.2.9.2 Range 对象方法之 insertNode、compareBoundaryPoints 方法
通过使用 Range 对象的方法 insertNode 来进行指定节点插入某个 Range 对象所代表的区域中插入位置为 Range 对象所代表的区域的起点位置。使用 compareBoundaryPoints 方法来比较两个 Range 对象的起点位置或终点位置。
<script>
function moveButton(){
var btn = document.getElementById("button");
var selection = document.getSelection();
if(selection.rangeCount > 0){
// alert(selection.rangeCount);
var range = selection.getRangeAt(1);
//必须选中两块才会显示第1这个,初始是0;
range.insertNode(btn);
}
}
</script>
<div onmouseup="moveButton()" style="width:400px;">这里是我随便书写的一段文字这里是我随便书写的一段文字这里是我随便书写的一段文字
</div>
<button id="button">插入按钮</button>
1.2.9.3 Range 对象方法之 collapse、detach 方法
Range 对象方法之 collapse 和 detach。通过使用 collapse 方法将 Range 对象所代表的区域的终点移动到该区域的起点处,或将 Range 对象所代表区域的起点移动到终点出。
<script>
var rangeObj = document.createRange();
function selectRangeContents(){
var div = document.getElementById("div");
rangeObj.selectNode(div);
// rangeObj.detach();
// 将range对象释放掉
}
function unselect(){
rangeObj.collapse(false);
// Range.collapse() 方法向边界点折叠该 Range 。
// 折叠后的 Range 为空,不包含节点内容。
// specifying a single-point in a DOM tree.
// 要确定 Range 是否已折叠,使用Range.collapsed 属性。
}
function showRange(){
alert(rangeObj.toString());
}
</script>
<div id="div" style="width:300px;height:20px;">元素中的内容!</div>
<button onclick="selectRangeContents()">选择元素</button>
<button onclick="unselect()">取消元素</button>
<button onclick="showRange()">显示range内容</button>
web前端学习(二)html学习笔记部分(3)--range对象的更多相关文章
- Web前端与移动开发学习路线图
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的Web前端与移动开发学习路线图包含初中级两个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.ba ...
- 想做web前端project师应该学习些什么?
偶然间看到这篇文章.感觉博主写的挺不错的,假设你想做web前端project师的话,建议您阅读下面这篇文章,事实上web前端project师所做的工作事实上就是站点设计,有些小公司的美工事实上就是做w ...
- 最全的WEB前端开发程序员学习清单
史上最全的WEB前端开发程序员学习清单! 今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我 ...
- web前端开发控件学习笔记之jqgrid+ztree+echarts
版权声明:本文为博主原创文章,转载请注明出处. 作为web前端初学者,今天要记录的是三个控件的使用心得,分别是表格控件jqgrid,树形控件ztree,图表控件echarts.下边分别进行描述. ...
- 2022年Web前端开发流程和学习路线(详尽版)
前言 前端侧重于人机交互和用户体验,后端侧重于业务逻辑和大规模数据处理.理论上,面向用户的产品里,所有问题(包括产品.设计.后端.甚至看不见的问题)的表现形式,都会暴露在前端,而只有部分问题(数据问题 ...
- web前端零基础入门学习!前端真不难!
现在互联网发展迅速,前端也成了很重要的岗位之一,许多人都往前端靠拢,可又无能为力,不知所措,首先我们说为什么在编程里,大家都倾向于往前端靠呢?原因很简单,那就是,在程序员的世界里,前端开发是最最简单的 ...
- 最适合2018年自学的web前端零基础系统学习视频+资料
这份资料整理花了近7天,如果感觉有用,可以分享给更有需要的人. 在看接下的介绍前,我先说一下整理这份资料的初衷: 我的初衷是想帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限 ...
- 史上最全的web前端开发程序员学习清单!
今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我回答过无数次这种问题了,但是问这个的还是有 ...
- WEB 前端模块化,读文笔记
文章链接 WEB 前端模块化都有什么? 知识点 根据平台划分 浏览器 AMD.CMD 存在网络瓶颈,使用异步加载 非浏览器 CommonJS 直接操作 IO,同步加载 浏览器 AMD 依赖前置 req ...
- web前端——Vue.js基础学习
近期项目的前端页面准备引入Vue.js,看了网上一些简介,及它和JQuery的对比,发现对于新入门的前端开发来说,Vue 其实也是比较适用的一个框架,其实用性不比JQuery差,感觉还挺有意思,于是研 ...
随机推荐
- PKU--3628 Bookshelf 2(01背包)
题目http://poj.org/problem?id=3628 分析:给定一堆牛的高度,把牛叠加起来的高度超过牛棚的高度. 且是牛叠加的高度与牛棚高度之差最小. 把牛叠加的高度看作是背包的容量,利用 ...
- Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为
Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为!!! 2018年07月23日 16:33:25 一颗很菜 ...
- 给java mongodb 官方driver 增加bean 操作
mongodb官方的java driver不支持直接插入java bean,只能使用DbObject的Key,Value形式进行insert,update,(c# mongodb官方driver类 ...
- vue 关闭微信浏览器(返回路由为undefined时)
参考:https://blog.csdn.net/KingJin_CSDN_/article/details/77050569 main.js: import router from './route ...
- matlab 实现感知机线性二分类算法(Perceptron)
感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = ...
- PIL的ImageDraw的颜色问题
因为我的图片的单通道的,所以用 draw = ImageDraw.Draw(image) im_width, im_height =], info[], info[], info[]) color=d ...
- java连接SQLserver数据库模板代码
package cn.mldn.lxh.dbc; import java.sql.Connection; import java.sql.DriverManager; public class Dat ...
- Mount- Linux必学的60个命令
1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 mount -a [-fv] [-t vfstype] [-n] [-rw] [-F ...
- 跟我一起安装vmware
第一步查看我们的电脑配置 我是windows10,下面的方法是windows10来安装vmware 第二步双击下图文件 (1) 2)弹出如下图,点击下一步即可. (3)一直点击下一步(期间会同意,勾选 ...
- linux学习(三)-----linux用户管理、实用指令
用户管理 基本介绍 说明: 1.Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向 系统管理员申请一个账号,然后以这个账号的身份进入系统. 2.Linux 的用户 ...