小编Kap*_*era的帖子

查找 javascript 树对象数组的父级

找到我创建的以下父子树对象。我需要找到给定子 ID 的根父级。例如,子 ID - 242 根父 ID 为 238。也有人提出了类似的问题,这是我发现与我的问题非常相似的问题。

将父子数组转换为树

我对原始代码做了一些更改,但不适用于子元素。问题就在这里。当它到来时,带有 for 循环的递归函数rootNode.children将不会执行,因为它不循环子级。但是,如果我将 for 循环更改 for (var i = 0; i < rootNode.length; i++) 为,for (var i = 0; i < rootNode.children.length; i++)那么它会在第一个循环上中断,因为没有子循环。我确信通过小的代码更改就可以工作。

var getParent = function (rootNode, rootId) {

if (rootNode.id === rootId)
    return rootNode;

//for (var i = 0; i < rootNode.children.length; i++) -- original code line not working first time 
for (var i = 0; i < rootNode.length; i++) {
    var child …
Run Code Online (Sandbox Code Playgroud)

javascript tree recursion

2
推荐指数
1
解决办法
8694
查看次数

在卸载前执行服务器 API 调用/页面卸载的限制?

下面的代码用于在 chrome 中工作,但由于 chrome 最近的更改“在页面关闭中禁止同步 XHR”而突然停止。2019 年 4 月上旬的 Crome 最近更新,我认为 Chrome 73.0.3683.103 停止了此功能,他们建议使用 sendBeacon 或 fetch keepalive。我将发布我尝试过的内容,以便这可能对其他人有所帮助。

https://www.chromestatus.com/feature/4664843055398912

$(window).on('beforeunload', function (e) {
     //ajax call used work in Chrome 
}
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

我知道有几个相关帖子涉及相同的情况,但仍然找不到解决方案。我尝试了多种方法来进行服务器调用。

步骤1:

$(window).on('beforeunload', function (e) {
 if (navigator.sendBeacon) {
    navigator.sendBeacon('url', 'data');
 } else {
    $.ajax({
        type: 'POST',
        url: 'url',
        data: null,
        contentType: 'application/json;',
        async: false
    });
 }
}
Run Code Online (Sandbox Code Playgroud)

由于内容类型 - application-json,这不起作用

第2步:

$(window).on('beforeunload', function (e) {
 var data = { ajax_data: 22 };
 var blob = new Blob([JSON.stringify(data)], {type …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

2
推荐指数
1
解决办法
6013
查看次数

标签 统计

javascript ×2

jquery ×1

recursion ×1

tree ×1