js的单引号和双引号的问题



为了实现点击文件夹后进入下一级文件夹,这里用到了dblclick方法,需要在这个方法里写入从后台数据库里传过来的数据,此时就涉及到了方法里面如何处理单引号和双引号的问题了


 jQuery.each(msg.rows,function(key,value){           
    title+="<lable id="+value.id+" οndblclick="+"openfile('"+value.id+"');"+"><img src="+value.picurl+" /><h6>"+value.name+"</h6> </lable>";
              
               });


这是正确的代码

之前是这样写的, 

<lable   ......   οndblclick="openfile("+value.id+") ;">  这是上面的那些文件夹都不会加载出来,因为由于方法里的参数没有单引号或者双引号,



所以,经过一番研究,&quot;可以解决单引号和双引号冲突的问题

οndblclick='openfile('&quot;+value.id+&quot;');'>

这样便正确了

当然也可以像上面那样写

注意:

单引号不能包含单引号  ,   双引号不能包含双引号,  否则就会出错的



参考的例子:

(1)

如何解决js中单引与双引冲突,想下面的这段代码:

 代码如下 复制代码

html += ' <a οnclick="return removeOpenCss('+e.point.lng+e.point.lat+')">取消</a>';

这是js中的代码,如果这里这样写的话,会提示js错误,是因为removeOpenCss方法里的参数没有单引或者双引,如果这里,这样写的话:

 代码如下 复制代码

html += ' <a οnclick="return removeOpenCss(“'+e.point.lng+e.point.lat+'”)">取消</a>';

直接会报错,因为这里单引和双引冲突,所以我只通过这样解决的:

 代码如下 复制代码

html += ' <a οnclick="return removeOpenCss(&quot;'+e.point.lng+e.point.lat+'&quot;)">取消</a>';

在JS当嵌套两层双引号时一般会出错

可用以下办法解决

将内层单引号替换为'
双引号替换为&quot;



(2)

关于js中单引号(')和双引号(")的使用以及转义的理解

  这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设计自己的个人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,所以我想到了使用&quot;来解决,

table.rows[t].cells[2].innerHTML='<input name="'+mlist[index].value+biduinum+'" type="text" size="12" style="width: 200px" readonly="readonly"  οnclick="WdatePicker({dateFmt:&quot;yyyy-MM-dd&quot;})" οnfοcus="WdatePicker({dateFmt:&quot;yyyy-MM-dd&quot;})" class="Wdate" />';

 

  问题解决了, 我生平第一次感觉到了这个东西的神奇, 原来只使用过&nbsp; ,看来在程序的世界中,每一样东西都有他存在的意义, 即使在我们不得已淘汰他们的时候 ,也要知道他们有意义的部分,因为这些富有意义的东西可能在某时某刻给我们极大地帮助,而且替代他们的产品未必可以将他们的优点全部传承,人亦如此 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章