Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
phpdts
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nemo Ma
phpdts
Commits
cac6c5ab
Commit
cac6c5ab
authored
Jun 13, 2025
by
Nemo Ma
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Assorted Bugfixes
parent
7a266b77
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
495 additions
and
16 deletions
+495
-16
command.php
command.php
+15
-0
doc/etc/20241218_fireseed_select_state_fix.txt
doc/etc/20241218_fireseed_select_state_fix.txt
+259
-0
doc/etc/20241218_fireseed_selector_fix.txt
doc/etc/20241218_fireseed_selector_fix.txt
+78
-0
gamedata/sql/players.sql
gamedata/sql/players.sql
+1
-1
templates/default/slidingpanel.htm
templates/default/slidingpanel.htm
+142
-15
No files found.
command.php
View file @
cac6c5ab
...
@@ -469,6 +469,21 @@ if($hp > 0){
...
@@ -469,6 +469,21 @@ if($hp > 0){
$log
.=
'<span class="red">请选择要强化的种火和焰火物品!</span><br>'
;
$log
.=
'<span class="red">请选择要强化的种火和焰火物品!</span><br>'
;
}
}
$mode
=
'command'
;
$mode
=
'command'
;
}
elseif
(
$sp_cmd
==
'sp_save_fireseed_select'
&&
$club
==
22
){
// 保存种火选择状态到clbpara
if
(
isset
(
$select_type
)
&&
isset
(
$fireseed_id
)){
if
(
!
isset
(
$clbpara
[
'fireseed_ui_state'
]))
{
$clbpara
[
'fireseed_ui_state'
]
=
array
();
}
$clbpara
[
'fireseed_ui_state'
][
$select_type
]
=
$fireseed_id
;
// 保存到数据库
$encoded_clbpara
=
json_encode
(
$clbpara
,
JSON_UNESCAPED_UNICODE
);
$db
->
query
(
"UPDATE
{
$tablepre
}
players SET clbpara='
$encoded_clbpara
' WHERE pid='
$pid
'"
);
$log
.=
"<!-- 种火选择状态已保存:
{
$select_type
}
=
{
$fireseed_id
}
-->"
;
}
$mode
=
'command'
;
}
else
{
}
else
{
$mode
=
$sp_cmd
;
$mode
=
$sp_cmd
;
}
}
...
...
doc/etc/20241218_fireseed_select_state_fix.txt
0 → 100644
View file @
cac6c5ab
This diff is collapsed.
Click to expand it.
doc/etc/20241218_fireseed_selector_fix.txt
0 → 100644
View file @
cac6c5ab
种火选择状态恢复问题修复 - 选择器查询问题
时间:2024年12月18日
## 问题描述
用户反馈种火选择状态恢复仍然失败,调试信息显示了一个矛盾的情况:
1. 选择框中确实存在种火440:`选项 3:440 ➤ 覆阳的薪火 (等级: 8, ID: 440)`
2. clbpara中也确实存在种火440的完整数据
3. 但恢复函数却报告"无法恢复选择状态,种火不存在: fireseed_item_id_panel = 440"
## 根本原因分析
问题不在于种火数据过滤或构建,而在于**选择器查询语法**:
```javascript
const option = select.querySelector(`option[value="${savedValue}"]`);
```
这个CSS选择器在某些情况下可能会失败,特别是:
1. 当值包含特殊字符时
2. 当值是纯数字时可能有引号问题
3. CSS选择器的转义规则可能导致匹配失败
## 修复方案
将CSS选择器查询替换为更可靠的DOM遍历方法:
### 修改前(第857-875行):
```javascript
// 检查保存的值是否仍然存在于选项中
const option = select.querySelector(`option[value="${savedValue}"]`);
if (option) {
select.value = savedValue;
// ...
} else {
console.log('无法恢复选择状态,种火不存在:', selectId, '=', savedValue);
// ...
}
```
### 修改后(第857-883行):
```javascript
// 检查保存的值是否仍然存在于选项中
// 使用更可靠的方法查找选项,避免选择器语法问题
let optionFound = false;
for (let i = 0; i < select.options.length; i++) {
if (select.options[i].value === savedValue) {
optionFound = true;
break;
}
}
if (optionFound) {
select.value = savedValue;
console.log('恢复种火选择状态:', selectId, '=', savedValue);
// ...
} else {
console.log('无法恢复选择状态,种火不存在:', selectId, '=', savedValue);
// ...
}
```
## 修复优势
1. **更可靠**:直接比较DOM元素的value属性,避免CSS选择器的转义问题
2. **更直观**:代码逻辑更清晰,容易理解和调试
3. **兼容性更好**:不依赖CSS选择器的复杂语法规则
4. **性能稳定**:简单的循环比复杂的选择器查询更稳定
## 预期效果
这个修复应该能解决种火选择状态恢复失败的问题,让用户能够正常恢复之前选择的种火状态。
## 测试建议
1. 选择种火440,执行操作后刷新页面,检查是否能正确恢复选择
2. 测试不同ID的种火,确保修复具有普遍性
3. 检查控制台是否还有"无法恢复选择状态"的错误信息
gamedata/sql/players.sql
View file @
cac6c5ab
...
@@ -163,7 +163,7 @@ CREATE TABLE bra_players (
...
@@ -163,7 +163,7 @@ CREATE TABLE bra_players (
statusc
int
(
10
)
NOT
NULL
default
'0'
,
statusc
int
(
10
)
NOT
NULL
default
'0'
,
statusd
int
(
10
)
NOT
NULL
default
'0'
,
statusd
int
(
10
)
NOT
NULL
default
'0'
,
statuse
int
(
10
)
NOT
NULL
default
'0'
,
statuse
int
(
10
)
NOT
NULL
default
'0'
,
clbpara
text
NOT
NULL
,
clbpara
medium
text
NOT
NULL
,
clbstatusa
int
(
10
)
NOT
NULL
default
'0'
,
clbstatusa
int
(
10
)
NOT
NULL
default
'0'
,
clbstatusb
int
(
10
)
NOT
NULL
default
'0'
,
clbstatusb
int
(
10
)
NOT
NULL
default
'0'
,
clbstatusc
int
(
10
)
NOT
NULL
default
'0'
,
clbstatusc
int
(
10
)
NOT
NULL
default
'0'
,
...
...
templates/default/slidingpanel.htm
View file @
cac6c5ab
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment