FXK Javascript
Javascript是一門神奇的語言,很不爽的一門語言,很糾結的一門語言.
以下內容,專業人士請不要看,只供像我一樣的菜鳥參考.
(1)Javascript找不到函數.明明已經引用了JS文件,卻提示找不到函數.仔細檢查發現,JS文件中另一個函數中存在語法錯誤,導致另一個函數找不到.將錯誤改正,即可找到函數.
VS編輯器中,有綠色的下劃線的錯誤,需要仔細改正檢查
(2)自己寫了一個加載頁碼的函數,通過AJAX獲取相關信息,然后通過JS循環附加.奇怪的是頁面中總會少點東西.比如,<<,<符號用來表示第一頁,前一頁,生成的頁面中,該兩個符號經常會合成一個符號.
以為是顯示層面的問題,放到table中,每個td保留足夠的寬度,結果還是會出現這個問題.經過試驗,似乎是JS文件中變量的問題.將附加<<符號的變量與<符號的變量,用兩個字符代替,即不會出現此問題.
比如:原代碼 var p1=document.createElement("a");?
.......
p1=document.createElement("a");
......
修改為:? var p1=document.createElement("a");?
.......
var p2=document.createElement("a");
......
(3)checkbox不顯示的問題: 下載了網上的一個網頁模板,在Modal中添加checkbox,前面的方框一直不顯示.通過IE的開發者工具,發現Modal中有此html代碼.
多方排查,原因,層層嵌套的CSS中,某一個css中設置了其opacity為0,導致了不顯示.網頁模板中沒打算在Modal的Form標簽中添加checkbox,因此,原作者故意設計的
Form標簽的某種特效,導致了此處的不顯示問題.
(4)未知提交也無法阻止的問題.在Modal中增加了Form表單,Modal中自帶一個頁腳Div,用以放入Button等按鈕.程序設計為在此處點擊按鈕之后,驗證然后提交至服務器.
驗證與提交功能一直很混亂,糾結到死.一直以為是JQuery 的Validate控件沒有學好所致.后來發現,頁腳DIV中即使放入一個<button>標簽,啥都不設置,點擊之后竟然
也提交至服務器.經長期糾結后發現,似乎是此處的模板做了些特殊設定,此處的按鈕點擊后,由JQuery通過某種途徑,還是提交到了后臺.
(5)JQuery Validate控件驗證像死一樣.第一次出現這個問題,是Form標簽忘記賦id屬性,所以,此處導致了某種找不到控件
第二次出現這個問題,是由于submit按鈕寫入了Form標簽之外,可是由于錯誤(4)的問題,希望是提交按鈕與Form標簽不在一個Form表單中.
后來沒有辦法,還是將Button放入了Form中
(6) 1.BootStrap 的iCheck控件的radio的一些列操蛋問題
這個控件在<input type="radio"/>后通過JS代碼增加了一些其他的東西,包括一些div等.
最初通過代碼設置其為Checked,結果一直不顯示.后來發現html源中多了好多東東,就自己寫JS代碼,
設置由JS生成的一大堆東東的樣式屬性等,以顯示出選中的效果.可以解決問題.效果如下:
<div class="iradio_minimal" aria-checked="false" aria-disabled="false" style="position: relative;"><input name="rdSP" id="rdSp" style="background: rgb(255, 255, 255); margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; left: -20%; top: -20%; width: 140%; height: 140%; display: block; position: absolute; opacity: 0;" onclick="StateSwitch()" type="radio" value="審批"><ins class="iCheck-helper" style="background: rgb(255, 255, 255); margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; left: -20%; top: -20%; width: 140%; height: 140%; display: block; position: absolute; opacity: 0;"></ins></div>2.后又出現新問題:
最初調試的時候,在<input type="radio" click="switchState()"/>,包含一個函數,剛開始執行正常.后來突然出現,
不在相應此事件了,推測似乎是在界面中的相關操作,被外層的DIV截獲,處于底部的radio事件無法觸發.
查詢資料,iCheck的事件綁定需要使用代碼,如下
1 //事件綁定 2 $("#rdSp").on("ifClicked", function (event) { 3 StateSwitch(); 4 }); 5 $("#rdWsp").on("ifClicked", function (event) { 6 StateSwitch(); 7 });3.解決了上述問題,又出問題(一開始沒有此問題的),radio的Check的狀態獲取不到了,明明選中了,代碼中卻獲取不到這個checked.
還是推測被外層的DIV給截獲了
通過查詢資料,
使用bootstrap iCheck插件的radio的checked狀態,應當通過如下代碼獲取
if ($("#rdSp").prop("checked")) {//to do something}
最初的通過document.getElemetById(),再獲取checked屬性的方法,對iCheck 包裝的,一開始可以,后來就不行了
辣么,1.中描述通過JS代碼層層設置其樣式多個屬性的方法也是比較啰嗦的,可通過如下代碼實現:
$("#rdSp").iCheck('check'); $("#rdWsp").iCheck('uncheck');4.解決了上述問題之后,辣么,又出現了一個問題:
代碼中跟選中的radio的不同,顯示不同的界面,通過radio的Click事件調用StateSwitch()方法,判斷一下目前的狀態,再以JS 往界面添加內容.
卻出了當我點擊radio1時,js卻得到了是radio2處于被選中的狀態.
推測:JQuery應是先獲取當前控件的Checked狀態,再切換狀態.
解決方法:checked取反,或者綁定ifChecked事件,來修改界面.
?
轉載于:https://www.cnblogs.com/DayDreamEveryWhere/p/4426047.html
總結
以上是生活随笔為你收集整理的FXK Javascript的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 穷举 百文百鸡
- 下一篇: java美元兑换,(Java实现) 美元