在最靠近鼠标的元素上方插入html元素
Insert html element above element closest to mouse
我使用拖放来允许用户移动元素。当一个元素被删除时,我需要把它放在鼠标位于DOM树的右边。以下是我想出来的:
var childnodes= e.target.children;
var mouse_x= e.clientX- e.target.offsetTop;
if(childnodes.lenght=== 0) e.target.appendChild(element);
else
{
for(var i = 0; i < childnodes.length; i++)
{
if(childnodes[i].offsetTop > mouse_x)
{
e.target.insertBefore(element, childnodes[i]);
break;
}
else if(i=== childnodes.length -1) e.target.appendChild(element);
}
}
但是由于某些原因,clientX返回不正确的值。
不确定你的问题到底是什么。也许真正的原因是Rasel关于长度拼写错误的评论?
如果有帮助,这里有一个小提琴,我认为这是你要找的:https://jsfiddle.net/ruairitobrien/v1bcabnk/
你的代码似乎在那里工作得很好。我将它添加到一个函数中,用于插入一个新创建的元素。
function insertRandomThing(e) {
var element = document.createElement("div")
element.innerHTML = 'X: ' + e.pageX + ' Y: ' + e.pageY;
var childnodes = e.target.children;
var mouse_x = e.clientX - e.target.offsetTop;
if (childnodes.length === 0) {
e.target.appendChild(element);
} else {
for (var i = 0; i < childnodes.length; i++) {
if (childnodes[i].offsetTop > mouse_x) {
e.target.insertBefore(element, childnodes[i]);
break;
} else if (i === childnodes.length - 1) {
e.target.appendChild(element);
}
}
}
}
相关文章:
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- JavaScript-在不影响索引的情况下将元素插入数组
- 仅为可见元素插入计数
- 将元素插入页眉
- Javascript:如果数组元素已填充,则为数组的每个元素插入表行
- AngularJS:如何将ng-click绑定到使用嵌入或对象元素插入的SVG图像
- 如何将元素插入 JSON 数组
- 为什么我的 HTML 按钮刷新页面?/为什么我不能让我的新 HTML DOM 元素插入到我的页面中
- 当 Javascript 中的 POST ID 元素插入 PDO 时,数据库中没有结果
- 拼接函数将相同的元素插入每个索引
- Javascript 将元素插入 char Ref 到带有子元素的可编辑 DIV 中
- 如何将SVG元素插入到带有JavaScript的组中
- 什么's是将数组中的元素插入到现有Html元素中的有效方法
- 如何将新元素插入'这'子元素Jquery
- 尝试从AngularJS中的控制器($scope)将元素插入到视图(HTML)中
- 将脚本元素插入浏览器操作页无效
- 循环遍历对象数组并将每个元素插入到html中
- jQuery/Javascript向元素插入属性
- 将元素插入DOM,位置基于时间戳
- 条件模板元素插入的EmberJS回调