javascript - 在离鼠标最近的元素上方插入 html 元素

标签 javascript html

我正在使用拖放功能让用户四处移动元素。当一个元素被放下时,如果鼠标在 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 正在重新调整不正确的值。

请不要使用 JS 库。

最佳答案

不确定您的问题到底是什么。也许拉塞尔关于长度拼写错误的评论才是真正的原因?

如果有帮助,我认为这里有一个 fiddle 就是您要找的: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);
            }
        }
    }
}

关于javascript - 在离鼠标最近的元素上方插入 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419693/

相关文章:

html - 使用 $routeProvider 是否节省网络带宽?

javascript - 在函数式编程中,为什么IO的join方法要运行unsafePerformIO两次?

javascript - 对齐动态头部和主体 - .Net MVC

javascript - 如何在 Angular 过滤器中添加正则表达式

javascript - jQuery 向上滑动行并在底部添加另一个

html - 如何限制父标签内的文本或 div

javascript - 使用 Jquery 了解 Drupal 7 表单中的匿名用户

PHP 重复表单验证。如何使用javascript进行验证?

javascript - 用页面加载百分比填充透明 Logo

javascript - 使用 id/class 滚动 div 隐藏/显示