GUI:addOnClickEvent(npc.ui.Button_1, function()
local data = SL:GetMetaValue("EQUIP_DATA", 3) or {}
SL:dump(data.ExAbil)
for k, v in ipairs(data.Exabil.abilex) do
SL:print(v[39])
-- if tonumber(v.abilex
你的代码有几个问题需要修正:
1. **字段名大小写错误**:`data.ExAbil` 和 `data.Exabil` 大小写不一致
2. **nil值判断不完整**:没有检查 `data.ExAbil.abilex` 是否存在
3. **循环变量使用错误**:`v[39]` 的索引方式可能不正确
修正后的代码:
```lua
GUI:addOnClickEvent(npc.ui.Button_1, function()
local data = SL:GetMetaValue("EQUIP_DATA", 3) or {}
SL:dump(data.ExAbil)
-- 先检查 ExAbil 是否存在
if data.ExAbil and data.ExAbil.abilex then
for k, v in ipairs(data.ExAbil.abilex) do
-- 检查 v 是否为 table 且包含 39 键
if type(v) == "table" and v[39] then
SL:print(v[39])
end
end
else
SL:print("ExAbil 或 abilex 数据为空")
end
end)
```
**关键修正点:**
1. 统一使用 `data.ExAbil`(注意大小写)
2. 增加多层 nil 值判断:`data.ExAbil and data.ExAbil.abilex`
3. 检查 `v` 是否为 table 类型再访问 `v[39]`
根据浮生梦老师的前端课程内容,处理嵌套数据结构时一定要做好每一层的空值判断,避免出现 "attempt to index field" 错误。