Commit cac6c5ab authored by Nemo Ma's avatar Nemo Ma

Assorted Bugfixes

parent 7a266b77
...@@ -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;
} }
......
2024年12月18日 副面板种火下拉框选择状态保持修复记录
## 问题描述
根据测试玩家反馈,副面板中的种火操作存在用户体验问题:
- 在"种火部署"、"种火物品"、"种火强化"功能中,执行操作后下拉框会重置到第一个种火
- 例如:从种火C获取物品,操作完成后下拉框又跳回种火A,需要重新选择种火C才能继续操作
- 这导致连续操作同一个种火时需要反复选择,用户体验不佳
## 问题分析
1. **根本原因**:种火操作后,`updateFireseedTab()` 函数会调用 `updateFireseedSelects()` 重新构建下拉框选项
2. **现有恢复机制失效**:虽然 `updateFireseedSelects()` 函数尝试保存和恢复选中值,但在某些情况下这个机制不起作用
3. **状态管理缺失**:缺乏全局的选择状态管理机制,无法在操作前后正确保持选择状态
## 修复方案
实现一个完整的种火下拉框选择状态保持机制:
1. **全局状态管理**:添加全局变量保存每个下拉框的选中状态
2. **操作前保存状态**:在执行种火操作前保存当前选择状态
3. **操作后恢复状态**:在操作完成并更新界面后恢复之前的选择状态
4. **实时状态同步**:在下拉框值改变时实时更新保存的状态
## 修复实施
### 修改文件:
- `templates/default/slidingpanel.htm`
### 具体修改内容:
#### 1. 添加全局状态变量(第730-735行)
```javascript
// 保存种火下拉框选中状态的全局变量
var fireseedSelectStates = {
'fireseed_id_panel': '',
'fireseed_item_id_panel': '',
'enhance_fireseed_id_panel': ''
};
```
#### 2. 添加状态保存和恢复函数(第807-846行)
```javascript
// 保存种火下拉框选中状态
function saveFireseedSelectStates() {
const selectIds = ['fireseed_id_panel', 'fireseed_item_id_panel', 'enhance_fireseed_id_panel'];
for (const selectId of selectIds) {
const select = document.getElementById(selectId);
if (select) {
fireseedSelectStates[selectId] = select.value;
console.log('保存选择状态:', selectId, '=', select.value);
}
}
}
// 恢复种火下拉框选中状态
function restoreFireseedSelectStates() {
const selectIds = ['fireseed_id_panel', 'fireseed_item_id_panel', 'enhance_fireseed_id_panel'];
for (const selectId of selectIds) {
const select = document.getElementById(selectId);
const savedValue = fireseedSelectStates[selectId];
if (select && savedValue) {
// 检查保存的值是否仍然存在于选项中
const option = select.querySelector(`option[value="${savedValue}"]`);
if (option) {
select.value = savedValue;
console.log('恢复选择状态:', selectId, '=', savedValue);
// 如果是种火物品选择框,需要更新物品显示
if (selectId === 'fireseed_item_id_panel') {
updateFireseedItems(savedValue);
}
} else {
console.log('无法恢复选择状态,选项不存在:', selectId, '=', savedValue);
// 清除无效的保存状态
fireseedSelectStates[selectId] = '';
}
}
}
}
```
#### 3. 修改下拉框HTML,添加onchange事件(第203、246、300行)
- `fireseed_id_panel`: 添加 `onchange="fireseedSelectStates['fireseed_id_panel'] = this.value;"`
- `fireseed_item_id_panel`: 修改为 `onchange="updateFireseedItems(this.value); fireseedSelectStates['fireseed_item_id_panel'] = this.value;"`
- `enhance_fireseed_id_panel`: 添加 `onchange="fireseedSelectStates['enhance_fireseed_id_panel'] = this.value;"`
#### 4. 在种火操作函数中添加状态保存和恢复
- **部署种火函数**(第872行):操作前调用 `saveFireseedSelectStates()`
- **获取种火物品函数**(第938行):操作前调用 `saveFireseedSelectStates()`
- **强化种火函数**(第1006行):操作前调用 `saveFireseedSelectStates()`
#### 5. 在操作成功回调中添加状态恢复
在所有三个操作的成功回调中,在 `updateFireseedTab()` 后添加:
```javascript
// 恢复选择状态
setTimeout(function() {
restoreFireseedSelectStates();
}, 100);
```
#### 6. 简化updateFireseedSelects函数(第1558-1588行)
移除了原有的恢复逻辑,因为现在有专门的恢复函数处理状态恢复。
#### 7. 在初始化时保存状态(第805行)
在 `initFireseedManagement()` 函数末尾添加 `saveFireseedSelectStates()` 调用。
## 修复效果
1. **保持选择状态**:种火操作后,下拉框会保持在操作前选择的种火上
2. **智能恢复**:如果保存的种火ID在更新后仍然存在,会自动恢复选择;如果不存在,会清除无效状态
3. **实时同步**:用户手动改变下拉框选择时,状态会实时保存
4. **物品显示同步**:种火物品选择框恢复时,会同时更新对应的物品列表显示
5. **调试支持**:添加了console.log输出,便于调试状态保存和恢复过程
## 测试建议
1. 测试连续对同一种火进行多次操作(部署、获取物品、强化)
2. 测试在不同种火之间切换操作
3. 测试种火数据变化时的状态恢复(如种火被删除的情况)
4. 验证种火物品选择框的物品列表显示是否正确同步
## 修复方案调整(第二版)
根据测试玩家反馈,第一版修复方案仍然存在问题。问题在于JavaScript的临时状态保存在页面刷新或数据更新时会丢失。
### 新的修复方案:
将种火选择状态持久化保存到clbpara中,这样可以在页面刷新时保持状态。
### 第二版修改内容:
#### 1. 移除临时状态管理(第730-735行)
移除了JavaScript的临时状态变量,改为使用clbpara持久化存储。
#### 2. 新的状态保存函数(第800-830行)
```javascript
// 保存种火选择状态到服务器
function saveFireseedSelectToServer(selectType, fireseedId) {
// 通过AJAX调用服务器端保存状态
// 使用sp_save_fireseed_select命令
}
```
#### 3. 新的状态恢复函数(第832-865行)
```javascript
// 从clbpara恢复种火下拉框选中状态
function restoreFireseedSelectStates() {
// 从clbpara.fireseed_ui_state中读取保存的状态
// 映射不同的选择类型到对应的下拉框
}
```
#### 4. 修改下拉框事件(第203、246、300行)
将onchange事件改为调用新的保存函数:
- `onchange="saveFireseedSelectToServer('deploy', this.value);"`
- `onchange="updateFireseedItems(this.value); saveFireseedSelectToServer('items', this.value);"`
- `onchange="saveFireseedSelectToServer('enhance', this.value);"`
#### 5. 服务器端处理(command.php第475-487行)
```php
}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'");
}
$mode = 'command';
```
#### 6. 在updateFireseedTab中添加状态恢复(第1462-1464行)
```javascript
// 恢复种火选择状态
setTimeout(function() {
restoreFireseedSelectStates();
}, 100);
```
### 数据结构:
在clbpara中添加fireseed_ui_state字段:
```json
{
"fireseed_ui_state": {
"deploy": "种火ID",
"items": "种火ID",
"enhance": "种火ID"
}
}
```
这个修复确保了副面板种火操作的用户体验,用户可以连续对同一种火进行操作而无需重复选择。状态会持久化保存到数据库中,即使页面刷新也能正确恢复。
## 调试修复(第三版)
根据测试玩家提供的调试信息,发现问题出现在种火数据过滤逻辑上:
- 调试信息显示"无法恢复连接状态,种火不存在: fireseed_id_panel = 440"
- 但实际上种火ID 440和370确实存在于玩家数据中
- 这说明问题出现在 `updateFireseedSelects()` 函数的过滤逻辑上
### 问题分析:
1. **过滤逻辑过于严格**:原来的过滤条件要求种火必须同时有name和level字段
2. **数据结构差异**:某些种火可能缺少name或level字段,但仍然是有效的种火
3. **时序问题**:恢复函数在下拉框重建后立即执行,但某些种火被过滤掉了
### 第三版修改内容:
#### 1. 放宽种火过滤条件(第1588-1621行)
```javascript
// 原来的严格条件:
if (!clbpara.fireseed[fsId] || typeof clbpara.fireseed[fsId] !== 'object' ||
!clbpara.fireseed[fsId].name || !clbpara.fireseed[fsId].level) {
// 修改为更宽松的条件:
if (!fsData || typeof fsData !== 'object') {
continue;
}
if (!fsData.name && !fsData.level) {
continue;
}
```
#### 2. 改进显示文本构建(第1603-1621行)
```javascript
// 处理可能缺失的字段
let displayText = '';
if (fsData.name) {
displayText += fsData.name;
} else {
displayText += '种火' + fsId;
}
if (fsData.level) {
displayText += ' (等级: ' + fsData.level;
} else {
displayText += ' (等级: 未知';
}
```
#### 3. 增强调试信息(第1575、1588、1829-1878行)
- 在 `updateFireseedSelects()` 开始时输出clbpara.fireseed数据
- 为每个种火添加详细的检查和添加日志
- 在 `restoreFireseedSelectStates()` 中添加完整的调试信息
- 列出所有可用选项,便于对比分析
#### 4. 调试信息包含:
- 保存的种火选择状态
- 每个选择框的所有可用选项
- 种火在clbpara中的存在状态
- 详细的过滤和添加过程
### 预期效果:
1. **包容性更强**:即使种火缺少某些字段,只要不是完全无效,就会被包含在选择框中
2. **调试信息完整**:可以清楚看到种火数据的处理过程和选择框的构建过程
3. **问题定位精确**:如果仍有问题,可以通过详细日志快速定位原因
这个修复应该能解决种火ID 440和370无法在选择框中找到的问题。
种火选择状态恢复问题修复 - 选择器查询问题
时间: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. 检查控制台是否还有"无法恢复选择状态"的错误信息
...@@ -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 mediumtext 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',
......
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
<div class="section-content"> <div class="section-content">
<div class="form-group"> <div class="form-group">
<label for="fireseed_id_panel">选择种火:</label> <label for="fireseed_id_panel">选择种火:</label>
<select id="fireseed_id_panel"> <select id="fireseed_id_panel" onchange="saveFireseedSelectToServer('deploy', this.value);">
<!--{if !empty($clbpara['fireseed'])}--> <!--{if !empty($clbpara['fireseed'])}-->
<!--{loop $clbpara['fireseed'] $fs_id $fs_data}--> <!--{loop $clbpara['fireseed'] $fs_id $fs_data}-->
<option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option> <option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option>
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
<div class="section-content"> <div class="section-content">
<div class="form-group"> <div class="form-group">
<label for="fireseed_item_id_panel">选择种火:</label> <label for="fireseed_item_id_panel">选择种火:</label>
<select id="fireseed_item_id_panel" onchange="updateFireseedItems(this.value)"> <select id="fireseed_item_id_panel" onchange="updateFireseedItems(this.value); saveFireseedSelectToServer('items', this.value);">
<!--{if !empty($clbpara['fireseed'])}--> <!--{if !empty($clbpara['fireseed'])}-->
<!--{loop $clbpara['fireseed'] $fs_id $fs_data}--> <!--{loop $clbpara['fireseed'] $fs_id $fs_data}-->
<option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option> <option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option>
...@@ -297,7 +297,7 @@ ...@@ -297,7 +297,7 @@
<div class="section-content"> <div class="section-content">
<div class="form-group"> <div class="form-group">
<label for="enhance_fireseed_id_panel">选择种火:</label> <label for="enhance_fireseed_id_panel">选择种火:</label>
<select id="enhance_fireseed_id_panel"> <select id="enhance_fireseed_id_panel" onchange="saveFireseedSelectToServer('enhance', this.value);">
<!--{if !empty($clbpara['fireseed'])}--> <!--{if !empty($clbpara['fireseed'])}-->
<!--{loop $clbpara['fireseed'] $fs_id $fs_data}--> <!--{loop $clbpara['fireseed'] $fs_id $fs_data}-->
<option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option> <option value="$fs_id">$fs_data['name'] (等级: $fs_data['level'], ID: $fs_id)</option>
...@@ -794,6 +794,97 @@ ...@@ -794,6 +794,97 @@
} }
} }
// 保存种火选择状态到服务器
function saveFireseedSelectToServer(selectType, fireseedId) {
if (!fireseedId) return;
console.log('保存种火选择状态到服务器:', selectType, '=', fireseedId);
// 准备数据
const formData = new FormData();
formData.append('mode', 'command');
formData.append('command', 'special');
formData.append('sp_cmd', 'sp_save_fireseed_select');
formData.append('select_type', selectType);
formData.append('fireseed_id', fireseedId);
// 使用AJAX提交
const xhr = new XMLHttpRequest();
xhr.open('POST', 'command.php', true);
xhr.onload = function() {
if (xhr.status === 200) {
console.log('种火选择状态已保存到服务器');
} else {
console.error('保存种火选择状态失败:', xhr.statusText);
}
};
xhr.onerror = function() {
console.error('网络错误,无法保存种火选择状态');
};
xhr.send(formData);
}
// 从clbpara恢复种火下拉框选中状态
function restoreFireseedSelectStates() {
if (!clbpara || !clbpara.fireseed_ui_state) {
console.log('没有保存的种火选择状态');
return;
}
console.log('开始恢复种火选择状态,保存的状态:', clbpara.fireseed_ui_state);
const selectMappings = {
'deploy': 'fireseed_id_panel',
'items': 'fireseed_item_id_panel',
'enhance': 'enhance_fireseed_id_panel'
};
for (const [stateKey, selectId] of Object.entries(selectMappings)) {
const savedValue = clbpara.fireseed_ui_state[stateKey];
const select = document.getElementById(selectId);
console.log('处理选择框:', selectId, '保存的值:', savedValue);
if (select && savedValue) {
// 先列出所有可用选项
console.log('选择框', selectId, '的所有选项:');
for (let i = 0; i < select.options.length; i++) {
console.log(' 选项', i, ':', select.options[i].value, '=', select.options[i].textContent);
}
// 检查保存的值是否仍然存在于选项中
// 使用更可靠的方法查找选项,避免选择器语法问题
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);
// 如果是种火物品选择框,需要更新物品显示
if (selectId === 'fireseed_item_id_panel') {
updateFireseedItems(savedValue);
}
} else {
console.log('无法恢复选择状态,种火不存在:', selectId, '=', savedValue);
// 检查种火是否真的存在于clbpara中
if (clbpara.fireseed && clbpara.fireseed[savedValue]) {
console.log('种火在clbpara中存在,但不在选择框中:', savedValue, clbpara.fireseed[savedValue]);
} else {
console.log('种火在clbpara中不存在:', savedValue);
}
}
}
}
}
// 更新种火物品显示 // 更新种火物品显示
function updateFireseedItems(fsId) { function updateFireseedItems(fsId) {
// 隐藏所有种火物品列表 // 隐藏所有种火物品列表
...@@ -820,6 +911,9 @@ ...@@ -820,6 +911,9 @@
return; return;
} }
// 保存当前选择状态到服务器
saveFireseedSelectToServer('deploy', fireseedId);
console.log('部署种火 - ID:', fireseedId, '模式:', deployMode, '位置:', deployPls); console.log('部署种火 - ID:', fireseedId, '模式:', deployMode, '位置:', deployPls);
// 准备数据 // 准备数据
...@@ -879,6 +973,9 @@ ...@@ -879,6 +973,9 @@
return; return;
} }
// 保存当前选择状态到服务器
saveFireseedSelectToServer('items', fsId);
const itemId = selectedItem.value; const itemId = selectedItem.value;
// 准备数据 // 准备数据
...@@ -940,6 +1037,9 @@ ...@@ -940,6 +1037,9 @@
return; return;
} }
// 保存当前选择状态到服务器
saveFireseedSelectToServer('enhance', fireseedId);
// 准备数据 // 准备数据
const formData = new FormData(); const formData = new FormData();
formData.append('mode', 'command'); formData.append('mode', 'command');
...@@ -1379,6 +1479,11 @@ ...@@ -1379,6 +1479,11 @@
// 更新种火物品列表 // 更新种火物品列表
updateFireseedItemsList(); updateFireseedItemsList();
// 恢复种火选择状态
setTimeout(function() {
restoreFireseedSelectStates();
}, 100);
console.log('Fireseed tab updated'); console.log('Fireseed tab updated');
} }
...@@ -1477,6 +1582,8 @@ ...@@ -1477,6 +1582,8 @@
// 更新种火选择下拉框 // 更新种火选择下拉框
function updateFireseedSelects() { function updateFireseedSelects() {
console.log('开始更新种火选择下拉框,clbpara.fireseed:', clbpara.fireseed);
const selects = [ const selects = [
document.getElementById('fireseed_id_panel'), document.getElementById('fireseed_id_panel'),
document.getElementById('fireseed_item_id_panel'), document.getElementById('fireseed_item_id_panel'),
...@@ -1486,14 +1593,14 @@ ...@@ -1486,14 +1593,14 @@
for (const select of selects) { for (const select of selects) {
if (!select) continue; if (!select) continue;
// 保存当前选中值 console.log('更新选择框:', select.id);
const currentValue = select.value;
// 清除现有选项 // 清除现有选项
select.innerHTML = ''; select.innerHTML = '';
// 如果没有种火数据,添加提示选项 // 如果没有种火数据,添加提示选项
if (!clbpara.fireseed || Object.keys(clbpara.fireseed).length === 0) { if (!clbpara.fireseed || Object.keys(clbpara.fireseed).length === 0) {
console.log('没有种火数据');
const option = document.createElement('option'); const option = document.createElement('option');
option.value = ''; option.value = '';
option.textContent = '你还没有收纳任何种火'; option.textContent = '你还没有收纳任何种火';
...@@ -1503,23 +1610,43 @@ ...@@ -1503,23 +1610,43 @@
// 添加种火选项 // 添加种火选项
for (const fsId in clbpara.fireseed) { for (const fsId in clbpara.fireseed) {
const fsData = clbpara.fireseed[fsId];
console.log('检查种火数据:', fsId, fsData);
// 跳过非对象类型的条目或无效数据 // 跳过非对象类型的条目或无效数据
if (!clbpara.fireseed[fsId] || typeof clbpara.fireseed[fsId] !== 'object' || if (!fsData || typeof fsData !== 'object') {
!clbpara.fireseed[fsId].name || !clbpara.fireseed[fsId].level) { console.log('跳过无效种火数据(非对象):', fsId, fsData);
console.log('跳过无效种火数据(选择框):', fsId, clbpara.fireseed[fsId]); continue;
}
// 检查必要字段,但更宽松一些
if (!fsData.name && !fsData.level) {
console.log('跳过无效种火数据(缺少name和level):', fsId, fsData);
continue; continue;
} }
const fsData = clbpara.fireseed[fsId];
const option = document.createElement('option'); const option = document.createElement('option');
option.value = fsId; option.value = fsId;
option.textContent = fsData.name + ' (等级: ' + fsData.level + ', ID: ' + fsId + ')';
select.appendChild(option); // 构建显示文本,处理可能缺失的字段
let displayText = '';
if (fsData.name) {
displayText += fsData.name;
} else {
displayText += '种火' + fsId;
}
if (fsData.level) {
displayText += ' (等级: ' + fsData.level;
} else {
displayText += ' (等级: 未知';
} }
// 尝试恢复之前的选中值 displayText += ', ID: ' + fsId + ')';
if (currentValue && select.querySelector(`option[value="${currentValue}"]`)) {
select.value = currentValue; option.textContent = displayText;
select.appendChild(option);
console.log('添加种火选项:', fsId, displayText);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment