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; ,看來在程序的世界中,每一樣東西都有他存在的意義, 即使在我們不得已淘汰他們的時候 ,也要知道他們有意義的部分,因爲這些富有意義的東西可能在某時某刻給我們極大地幫助,而且替代他們的產品未必可以將他們的優點全部傳承,人亦如此 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章