如何解決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("'+e.point.lng+e.point.lat+'")">取消</a>'; |
在JS當嵌套兩層雙引號時一般會出錯
可用以下辦法解決
關於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,所以我想到了使用"來解決,
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" />';