IT log

moral & concision is my dream.

multiple select list box & Javascript & PHP

多个复选框的参数传输我以前用数组就实现了, 这次遇到的问题是所谓的 “多项选择列表框” 提交后, 用PHP 遍历 $_POST和 $_GET 都只能得到一个参数.

看了现在的 php 版本还不支持, 只得先采用 javascript 代码来中介了.

var specid_h=document.getElementById(‘specid_h’);
for(var i=0;i<specid.options.length;i++){
if(specid.options[i].selected){
if(specid_h.value){specid_h.value=specid_h.value+”|”+specid.options[i].value;}
else{specid_h.value=specid.options[i].value;}
}
}

然后再在 php 代码中拆分成数组:

print_r(Split(“\|”,$_POST['specid_h']));

现在是凌晨4:12, 解决了这个问题后, 剩下图表控制代码我应该可以在 4:30前搞掂, 就可以放心睡觉了, 上午给高强他们简单的培训一下, 中午就可以坐火车回东莞了…

posted by Leon Tsang in Live - Work and Struggle and have No Comments

merge table cells using javascript

天啦, 我都快哭了, 为了完美生成一个报表, 最后需要合并表格中部分单元格, 最开始我是想用 php 的二维数组存储所有单元格内容后来比较相同项, 不过在折腾了2个多小时后, 我被多重循环递归给弄崩溃了, 生成的表格样式越来越混乱.

不得已, 只好出动百度搜索找到 javascript 多个实例, 结果我复制粘贴后根本就无法运行, 最后在 CSDN.net 上找回我以前的账户密码并登陆后下载了一个所谓的 javascript万能table合并单元格, 看在其牛X的名字上我就姑且一试, 其源代码如下:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<title></title>
</head>
<body>
<script type=”text/javascript”>
function uniteTdCells(tableId){
var table = document.getElementById(tableId);
for(i=0;i<table.rows.length;i++){
for(c=0;c<table.rows[i].cells.length;c++){
if(c==0||c==1||c==2||c==3)            //选择要合并的列序数,去掉默认全部合并
for(j=i+1;j<table.rows.length;j++){
var cell1=table.rows[i].cells[c].innerHTML;
var cell2=table.rows[j].cells[c].innerHTML;
if(cell1==cell2){
table.rows[j].cells[c].style.display=’none’;
table.rows[i].cells[c].rowSpan++;
} else break;                        }
}       }    }
function closeTD(id){
var table = document.getElementById(id);
for(i=0;i<table.rows.length;i++){
for(c=0;c<table.rows[i].cells.length;c++){
if(c==1||c==2)
if(table.rows[i].cells[c].style.display==’none’)
table.rows[i].cells[c].style.display=’block’;
else if(table.rows[i].cells[c].style.display==’block’||table.rows[i].cells[c].style.display==”)
table.rows[i].cells[c].style.display=’none’;
}
}            }
</script>
<table border=”1″ id=”dd”>
<tr><td>1</td><td>3</td><td>5</td><td>1</td></tr>
<tr><td>1</td><td>3</td><td>5</td><td>1</td></tr>
<tr><td>2</td><td>3</td><td>8</td><td>1</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>3</td></tr>
<tr><td>2</td><td>3</td><td>3</td><td>4</td></tr>
<tr><td>2</td><td>3</td><td>3</td><td>4</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>4</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>4</td></tr>
</table>
<input type=”button” value=”合并” onclick=”uniteTdCells(‘dd’)”>
<input type=”button” value=”隐藏/显示列” onclick=”closeTD(‘dd’)”>
<input type=”button” value=”刷新” onclick=”location.href=’uniteCells.html’”>
</body>
</html>

测试结果还不错, 实例可以正常运行, 没有错误, 不过在我嵌入到我的代码中后, 就出现了 “table.rows[j].cells[c] is not undefined” 的错误提示了, 看了其万能的称谓还是夸张了些, 不过好在主体功能完好, 经过我的一番努力调整后总算可以正常运行了, 我修改后的函数如下:
Read more…

posted by Leon Tsang in Live - Work and Struggle and have No Comments

Work Diary: 2009-4-25

由于最近一直在安阳kerry做SPC数据分析自动化的程序项目,而最近又快五一了,所以比较着急,为了提高效率,我这周基本上都是只睡5个小时,晚上和上网都一直在办公室学习和工作,中午吃饭后睡觉,然后下午吃饭后又来上班,有时错过中餐或晚餐。

最近遇到一个问题就是:一个页面上的  javascript 脚本的DOM弹出层函数上失效,无法正常显示弹出层上的内容。

最初的判断是:冗长的html代码导致,可能是javascript引擎存在缺陷。

分析:把动态生产的javascript脚本函数转为html的执行结果时可以正常显示弹出层的,而且当缩减一半html代码时脚本也恢复正常显示层,且Firefox中的 Error Console 没有提示任何错误。

我的解决方法:把部分HTML代码临时存入文本,需要时用iframe加载显示。

总结,分析:我使用 Firefox 的插件 Web Developer 时,是可以从 Toolbar – View Source – View Frame Source 中看到弹出层中加载的网页源代码是正常的,所以实际原因应该是屏幕高度(大约6-7屏,以为3-4屏高度是可以正常显示)和我的脚本之间存在兼容性问题。各种浏览器中的屏幕宽度和高度计算方法本来就不一样,再加上我的弹出层本身就处于一个子框架内,所以以前编写这个弹出层函数时为了IE, Firefox, Opera浏览器的兼容性已经很费劲了,现在还是不要修改它吧,反正问题已经解决了。

posted by Leon Tsang in Live - Work and Struggle and have No Comments