js里面 document 什么意思
发布时间:2025-05-25 05:39:15 发布人:远客网络
一、js里面 document 什么意思
1、JavaScript中的`document`是一个代表整个HTML文档的对象。
2、`document`对象在Web开发中非常重要,因为它提供了对HTML文档内容的访问和操作。通过`document`对象,我们可以读取、修改和创建HTML元素,以及处理各种文档相关的事件。
3、在JavaScript中,你可以使用`document`对象来获取页面上的元素。例如,如果你有一个ID为“myElement”的元素,你可以使用`document.getElementById('myElement')`来获取这个元素。一旦你获取了这个元素,你就可以对其进行各种操作,如更改其内容、样式或添加事件监听器。
4、除了获取元素外,`document`对象还提供了许多方法和属性,用于创建和修改HTML文档的内容。例如,你可以使用`document.createElement()`方法创建一个新的HTML元素,然后使用`appendChild()`或`insertBefore()`方法将其添加到文档中。你还可以使用`document.createTextNode()`方法创建一个新的文本节点,并将其添加到元素中。
5、此外,`document`对象还提供了许多事件,如`DOMContentLoaded`、`load`和`click`等。你可以使用`addEventListener()`方法为这些事件添加监听器,以便在事件发生时执行特定的代码。
6、总的来说,`document`对象是JavaScript中非常重要的一个对象,它提供了对HTML文档内容的全面访问和操作。通过学习和掌握`document`对象的使用,你可以更加灵活地进行Web开发,实现各种复杂的功能和交互效果。
二、excel中编写简单宏的方法步骤(2)
1、在“开发工具”页面中,点击“宏安全性”,然后在“信任中心”界面中将“开发人员宏设置”设置为“信任对VBA工程对象模型的访问”。
2、在“开发工具”界面中选中单元格A1,点击“录制宏”。然后设置:“宏名为加粗变红,快捷键为Ctrl+Shift+R”,然后点击“确定”就可以了。
3、接着在开始界面中,将单元格A1的内容加粗、填充为红色。然后点击“开发工具”中的“停止录制”就可以了。
4、接着我们可以设置单元格A2。选中单元格A2,然后点击“开发工具”界面中的“宏”,然后点击弹出页面中的“执行”就可以了。我们也可以选中单元格A2直接按住快捷键“Ctrl+Shift+R”就可以了。
1、首先在Excel中录制宏,然后点击“文件”中的“另存为”,接着设置文件保存类型为“Excel启用宏的工作簿”,然后点击确定就可以了。
2、在Excel中打开工作簿,选中单元格A3。然后点击“开发工具”界面中的“宏”。接着在弹出界面中点击“执行”就可以了。
以上就是Excel宏启用的两种方法,大家要是觉得这两种方法还不错的话,可以在空闲的时候试试。
三、SortableJS原理分析(源码)
前言
SortableJS是基于H5拖拽API实现的一个轻量级JS拖拽排序库,它适用于以下一些场景:
SortableJS是基于H5拖拽API实现的一个轻量级JS拖拽排序库,它适用于以下一些场景:
容器项目拖动排序:容器列表内的子项目,通过拖动进行位置调换,且具有动画效果;
容器间的项目移动:将一个容器列表中的子项目,拖动到另一个容器列表中(移动/克隆)。
不论是容器内元素顺序排序,或是两个容器内的元素进行移动,本质上是在通过操作DOM来实现。
下面我们先熟悉一下SortableJS基本使用。
现在,就可以在容器内进行排序拖动,或者拖动左侧容器元素,添加到右侧容器中。
在看源码之前,还是需要对H5拖拽用法有一定了解,如果不熟悉,直接去看源码很容易就放弃。
若你对H5拖拽API比较熟悉,就可以根据SortableJS的视图呈现效果,想出个大概思路。
拖拽,首先要搞清楚两个词汇对象:
拖动元素:作为拖拽元素被拖起(下文叫dragEl);
目标元素:作为拖拽元素即将被放置时的参照物(下文叫target);
在SortableJS中,拖拽离不开以下几个事件:
dragstart:作为拖拽元素,按下鼠标开始拖动元素时触发(拖拽周期只触发一次);
dragend:作为拖拽元素,当鼠标松开拖放元素时触发(拖拽周期只触发一次);
dragover:作为拖拽元素,当拖动元素进行移动,会持续触发,需要在这里取消默认事件,否则元素无法被拖动(松开时元素的预览幽灵图又回去了);
drop:作为目标元素,当鼠标松开拖放元素时触发(拖拽周期只触发一次);
下面我们一起去分析SortableJS具体实现。
从上面的示例使用上得知,SortableJS是一个构造函数,接收容器元素和配置项:
将传入的参数与提供的默认参数进行合并;
将原型上的方法绑定在实例对象上,便于使用;
绑定pointerdown、dragover、dragenter事件,其中pointerdown可以看作是dragstart事件,做了一些拖拽前的准备工作。
group用于两个容器元素的相互拖拽场景,规范group核心代码如下:
当鼠标按下触发pointerdown事件时,会保存拖动元素的信息,提供后续使用,并且注册dragstart事件:
on就是addEventListener,index方法用于获取元素在父容器内的索引:
_onDragStart用于处理dragstart事件逻辑,_onDrop用于处理拖拽结束逻辑,比如这里执行了dragEl.draggable=true;,那么在mouseup鼠标松开后需将draggable=false。
这里有趣的一点是dragend事件,它的处理函数绑定的是this即Sortable实例本身,我们都知道实例对象是一个对象,怎么能作为函数使用呢?
其实addEventListener第二参数可以是函数,也可以是对象,当为对象时,需要提有一个handleEvent方法来处理事件:
到这里,整个拖拽流程功能函数都暴露在了眼前:
_onDragStart处理dragstart拖拽开始工作;
_onDragOver处理拖拽移动到别的元素时工作;
_onDrop处理鼠标拖动结束的收尾工作。
clone一个dragEl元素副本,用于两个容器项目移动时使用;
触发外部传入的clone和dragstart事件;
_dispatchEvent会通过newwindow.CustomEvent构造一个事件对象,将拖拽元素的信息添加到自定义事件对象上,传递给外部的注册事件函数,大体代码如下:
可见,拖拽的核心逻辑不在dragstart中,下面我们去看dragenter的处理函数_onDragOver。
SortableJS的核心逻辑在_onDragOver中,拿容器内项目排序为例:当拖动dragEl元素,移动到另一个元素上时,会发生两者的位置交换,可见,Sort的逻辑在这里。
首先,在实例化对象时绑定了dragover和dragenter事件,并且通过handleEvent将事件逻辑交由_onDragOver来处理:
在_onDragOver中,需要注意一点是:假如有两个容器,那就有两个newSortable实例对象,isOwner将为false,这是就需要判断拖动容器的activeGroup.pull(是否允许被移动)和group.put(是否允许添加拖动过来的元素)。
上面的核心在于下面这一行代码:
如果拖拽元素的位置小于目标元素的位置,说明是从上往下拖动,那么将dragEl移动到target.nextSibling之前;
如果拖拽元素的位置大于目标元素的位置,说明是从下往上拖动,那么只需将dragEl移动到target之前即可;
整个移动过程均采用DOM操作insertBefore来实现。
另外如果是两个容器的场景(isOwner=false),并且拖动元素的容器activeGroup.pull=clone,需要将dragstart创建的clone元素渲染到容器中:
drop主要做一些收尾工作,如将dragEl.draggable=false,移除绑定的mouseup、dragstart、dragend事件,触发用户传入的sort、end事件等。
不过注意,虽然起名叫drop,触发的事件确是dragend。
如果想在拖动排序中有一定的animation动画效果,可以配置动画属性,属性值是动画持续时长:
动画的时机也是在dragenter中,大致的思路如下:
在操作DOM移动dragEl之前,记录容器内所有子项的位置;
进行DOM操作进行位置交换,DOM操作本身没有动画;
这时再去记录一次移动后的容器内所有子项的位置;
2、执行:有了上面几步的操作,接下来就可以根据移动前后的位置进行动画操作
通过translate先让元素立刻回到移动前的位置;
此时给元素自身设置过度效果transform;
这时候就可以通过translate让元素回到移动之后的位置。
本文以探索SortableJS拖拽思路为主线,去了解业界开源拖拽库的设计与思路。感谢阅读。