我在使用 JavaScript 设置/获取隐藏输入值时遇到问题,并且看不到我做错了什么。
我基本上想做的是在提交表单时保持页面上可扩展/可折叠 div 的状态。所以我在页面上放了一个隐藏的输入来保存 div 的状态。当 div 展开/折叠时,我会更改输入的值。当页面加载时,我读取输入的值并设置 div 的状态。
但是输入的价值正在丢失。我通过警报验证它是否设置正确,然后当我在加载时读取它时,我通过警报验证它是空的。以下是相关代码:
<input type="hidden" name="ECState" id="hdnECState" />
<script language="javascript" type="text/javascript">
<!--
var ecValue;
function ec(div, btn) {
//expands or collapses an error detail div
var e = document.getElementById(div);
var b = document.getElementById(btn);
var ecStr = div.toString() + ',' + btn.toString() + '|'
if (e.style.display == 'block') {
e.style.display = 'none';
b.src = '../../Images/plus.gif';
ecValue = ecValue.replace(ecStr, '');
}
else {
e.style.display = 'block';
b.src = '../../Images/minus.gif';
ecValue = ecValue + ecStr;
}
alert(ecValue);
document.getElementById('hdnECState').value = ecValue;
}
function reexpand() {
//restores the expanded state of the error detail divs
var pipe, comma, db, div, btn, e, b;
var n = document.getElementById('hdnECState').value;
alert('n=' + n);
if (n != '') {
pipe = n.indexOf('|');
while (pipe > 0) {
db = n.substring(0, pipe);
comma = db.indexOf(',');
if (comma > 0) {
div = db.substring(0, comma);
btn = db.substring(comma + 1);
e = document.getElementById(div);
b = document.getElementById(btn);
e.style.display = 'block';
b.src = '../../Images/minus.gif';
}
n = n.substring(pipe+1);
pipe = n.indexOf('|');
}
}
}
reexpand();
//-->
</script>
当我展开一个 div 时,我看到来自 ec() 的警报显示 ecValue 是 'foo,bar|'。
但是在提交表单后,我看到 reexpand() 的警报说'n ='。
有人看到我错过了什么吗?