使用JsTreeGrid插件计算扩展数量时遇get_parent未定义错误
解决JsTreeGrid计算Extended Quantity时的
get_parent未定义错误 嘿,这个错误很常见——你用的get_parent根本不是一个全局函数啦!JsTree并没有暴露这个全局方法,要获取父节点必须通过初始化后的jstree实例来调用对应的API。
下面是修正后的完整方案,还加了容错处理避免根节点或者数据缺失的情况:
首先,你需要先拿到jstree的实例,然后用实例的get_parent()方法去获取父节点,再安全地拿到父节点的quantity值来计算。
grid: { columns: [ {header: "Title", value: function(node){return(node.text);}}, {width: 150, header: "Quantity", value: function(node){return(node.data.quantity);}}, {width: 150, header: "Extended Quantity", value: function(node) { // 替换成你的jstree容器选择器,比如#myTree const tree = $('#tree').jstree(true); // 获取父节点的ID const parentId = tree.get_parent(node); // 处理根节点(没有父节点)的情况,默认父节点quantity为1 let parentQty = 1; if (parentId) { // 通过父节点ID拿到父节点对象,再取quantity const parentNode = tree.get_node(parentId); parentQty = parentNode.data?.quantity || 1; } // 当前节点的quantity,做个默认值避免undefined const currentQty = node.data?.quantity || 0; return parentQty * currentQty; }} ] }
几个关键点要注意:
- 一定要用
容器.jstree(true)获取实例,这是JsTree获取实例的标准方式,别再用不存在的全局方法啦。 - 加了根节点的判断,不然根节点计算的时候会因为没有父节点报错。
- 用了
?.可选链和默认值,防止节点数据里没有quantity字段导致的NaN或者报错,让代码更稳。
内容的提问来源于stack exchange,提问作者TheVic
相关产品推荐
相关产品推荐

