首页 > 其他分享 >js 关于dom

js 关于dom

时间:2023-08-17 09:47:02浏览次数:50  
标签:document dom js editor range let 关于 sel left

可编辑的div

// 加上contenteditable="true"即可,需要注意的是内部添加的子元素默认也可编辑
<div contenteditable="true" class="edit"></div>
<script>
var div = document.querySelector(".edit");
// 创建一个MutationObserver实例
var observer = new MutationObserver(this.divcontentchange);
// 开始监听盒子的变化
observer.observe(div, {
characterData: true, // 监听字符数据变化
childList: true, // 监听子节点变化
subtree: true // 监听子树的变化
});
//盒子内容变化
divcontentchange(mutations) {
mutations.forEach(function (mutation) {
console.log("盒子内容发生了变化!", mutation);
console.log("新的内容是:" + mutation.target.textContent);
});
}
</script>

div设置光标位置

<div contenteditable="true" id="editor"></div>

<script>
  let editor = document.getElementById('editor');

  // 将光标设置到开头
  editor.focus();
  let range = document.createRange();
  range.selectNodeContents(editor);
  range.collapse(true);
  let sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
  
  // 将光标设置到结尾
  editor.focus();
  range = document.createRange();
  range.selectNodeContents(editor);
  range.collapse(false);
  sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);

  // 将光标设置到指定位置
  editor.focus();
  range = document.createRange();
  range.setStart(editor.childNodes[3], 5); 
  range.collapse(true);
  sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(range);
</script>

js 创建dom

        var myDiv = document.querySelector(".edit");
        //创建dom
        var newspan = document.createElement("span"); 
        //添加标签属性
        newspan.setAttribute("contenteditable", false);
        //添加类名
        newspan.className = “classname”;
        //添加内容
        newspan.innerText = treeItem.treealias;
        //添加节点
        myDiv.appendChild(newspan);

        // 获取myDiv下所有子元素
        var childElements = myDiv.children;
        //获取父元素下最后一个子元素
        var lastChildElement = myDiv.lastElementChild;
        //删除指定子元素
        myDiv.removeChild(lastChildElement);

获取盒子样式属性

<input class="input" style="top: 0;left: 7px" v-model="text" autofocus ref="input" type="text" ></input>

<script>
      //这里必须是行内样式才能获取到
      //提前写了绝对定位,这里演示改变left值
      let input = this.$refs.input;
      let top = input.style.getPropertyValue("top"); //获取样式属性top
      let left = input.style.getPropertyValue("left"); //获取样式属性left
      let left_i = left.indexOf("p");
      let left_num = parseInt(left.slice(0, left_i)); //处理成数值
      input.style.left = left_num + offset + "px";

</script>

 

标签:document,dom,js,editor,range,let,关于,sel,left
From: https://www.cnblogs.com/guozhongbo/p/17636759.html

相关文章

  • web杂记(6)-js(2)
    目录assignassign>>letx={a:11,b:22};>>lety={b:33,c:44};>>letz={};>>Object.assign(z,x,y);>>zObject{a:11,b:33,c:44}>>z.toString()"[objectObject]">>z["toString"]=()=>{retur......
  • .NET Core读取配置文件 配置文件可以是JSON、XML或INI等格式,需要添加 Microsoft.Exten
    .NETCore读取配置文件配置文件可以是JSON、XML或INI等格式需要添加Microsoft.Extensions.Configuration扩展包原文链接:https://pythonjishu.com/qipsfiygesyrqfi/下面是“.NETCore读取配置文件”的完整攻略:1.创建配置文件首先,我们需要在项目中创建一个配置文件,以便存......
  • 论文解读(ECACL)《ECACL: A Holistic Framework for Semi-Supervised Domain Adaptation
     Note:[wechat:Y466551|付费咨询,非诚勿扰]论文信息论文标题:ECACL:AHolisticFrameworkforSemi-SupervisedDomainAdaptation论文作者:KaiLi,ChangLiu,HandongZhao,YulunZhang,Y.Fu论文来源:2021ICCV论文地址:download 论文代码:download视屏讲解:click1介绍 ......
  • json和yaml语法转换
    yaml格式vim0224.yaml-"0224":老师:于超学生们:-黄彦:-年龄:23地址:深圳陈亮亮:-年龄:24地址:广州罗兴林:-年龄:24地址:贵州字典的形式:"key":"value",转化为json类型去看,{"key":value},大括号{}保存字典纯变......
  • 关于使用Terraform为Azure创建一个资源组的简单案例
    使用Terraform创建AzureCloud平台的资源需要,得还有如下主要的环境及条件a、安装有Terraformb、解决身份认证及相关的权限++++++++++++++++++++++++++++++++++++++++++++++本文的目标,创建一个rg-开着的随机名称的资源组先得准备有4个文件,【providers.tf】、【main.tf】、【v......
  • 【Azure Service Fabric】关于Service Fabric的相关问题
    问题一:ServiceFabric是否支持PrivateLink?在AzurePrivateEndpoint文档中,罗列出了Azure上支持PrivateLink的服务。ServiceFabric不在其中。AzurePrivateLinkavailability:https://learn.microsoft.com/en-us/azure/private-link/availability 问题二:是否可以Disable......
  • python 运行 execjs 出现错误 UnicodeEncodeError: 'gbk' codec can't encode charac
    异常解读该异常的格式一般为:UnicodeEncodeError: 'gbk'codeccan'tencodecharacter'\xfe'inpositio该异常出现的场景为在Windows电脑下使用Pythonexecjs运行指定的JS文件,但JS文件中包含中文。异常解决方案该问题解决需要修改你电脑Python安装目录下 lib......
  • 关于element ui table回选的问题思考
    业务需求选设备,左侧树,右侧是树,下方是element的tag原先版本是左右都是树,这样出现了一个问题当左侧是虚拟滚动树的时候,展开的节点过多,右侧点击全选的时候会很慢,原因:查看源码之后发现,tree-store.js中,elementui在树注册的时候,getAllNodes是页面中所有的节点,意思就是把其他的树节......
  • 【Azure Service Fabric】关于Service Fabric的相关问题
    问题一:ServiceFabric是否支持PrivateLink?在AzurePrivateEndpoint文档中,罗列出了Azure上支持PrivateLink的服务。ServiceFabric不在其中。AzurePrivateLinkavailability:https://learn.microsoft.com/en-us/azure/private-link/availability 问题二:是否可以Dis......
  • 关于Duubo和Rpc的理解
    一.什么是Dubbo,什么是RPC?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底>层网络技术的协议。1.远程调用就是本地机器......