原文:http://www.cnblogs.com/gengyulong/archive/2011/05/06/2038573.html
这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设计自己的个人QQ空间,但因为是大型平台,有自定义业务的概念 ,所有更为复杂,在这就不多说了,我所谓的画页面就是如何把数据结合逻辑,变成HTML,其中遇到的最大的问题就是我今天要说的;
一个页面上有一个查询,当然查询的条件,字段类型都是动态的,要根据数据类型生成不同的文本框,如果是varchar2就生成不同的, 如果是date就生成加入时间选择js的,页面上有一个添加新的条件组的按钮,链接到一个js事件,里面就要做关于文本框的判断,我们只看判断部分 如下;
if(tlist[index].value=="date")
{
table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly" οnclick="WdatePicker({dateFmt:"yyyy-MM-dd"})" οnfοcus="WdatePicker({dateFmt:"yyyy-MM-dd"})" class="Wdate" />';
}
else
{
table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" />';
}
重点为红色部分, 这样写我本来认为是无可厚非的, 但是如果这段代码执行一次,就汇报js错误,错误信息是“语法错误”,js本身为弱语言,单引号和双引号如果是但用的话其实可以混淆的,但如果一起用就要区分,例如上段代码我可以把单引号和双引号对换,也是可以的, 但如果只改变其中一处就需要用+号链接, 意义也不同了,例如
"'b'" 可以 ,但""b""就会出错,需要""+"b"+""
无法通过单引号双引号的改变来解决问题,我就开始寻求别的思路,我尝试了使用 \ (转义符)来解决,如下
οnclick="WdatePicker({dateFmt:\"yyyy-MM-dd\"})"
但还是不行,个人认为原因是js还是在html的作用中,而不是java,所以我想到了使用‘"’(别忘了分号)来解决,
table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly" οnclick="WdatePicker({dateFmt:"yyyy-MM-dd"})" οnfοcus="WdatePicker({dateFmt:"yyyy-MM-dd"})" class="Wdate" />';