應該有許多人像我一樣,自學關於IT方面所需的知識,從作業系統、應用軟體到程式設計。接著,可能跟我一樣,不是很了解某個程式設計的演進、專有名詞或搞不清楚背後運作的原理,也不清楚什麼是DOM、怎麼宣告才是物件,怎麼宣告Function,或,當程式開始執行時,到底是先執行什麼,後執行什麼,某個變數,要宣告為全域變數或區域變數,這個明明看起來是數字,可是卻被判定為字串...
這種時候,可能有人就放棄了,關於自學這件事。
到目前,每次需要用到Javascript、JQuery或PHP時,都要花好多時間,去處理自己在撰寫時,所產生的錯誤。錯誤如果找到,那就繼續寫下去,找不到就卡住,不然就是全部砍掉,再重來一次...重來之後,發現問題一樣存在並且和重來之前的問題一樣。
就好像,Windows不能上網,用Ghost還原之後,還是不能上網,最後發現是網路線沒接...
接下來要介紹的是,自己在尋找自己的程式Bug時,或是解決SI環境時,所用的思緒,供參考。
這兩張照片,是今年(2016)7月10幾號,在台東市區拍的照片,這兩張照片,是在說明,被尼伯特颱風的17級陣風,掃過的台東市區,要能順利或快速,找到自己產生的Bug或是SI環境異常時,看懂這兩張照片,會很有幫助。
2016年7月10號之後,,當各家新聞台,在播報台東市區,因颱風關係,商家招牌被破壞的很嚴重時,真正的畫面,是像這樣。
第一張,我在台東市區的中華路往北所拍攝,這一張可能看不出那裡怪。
第二張,第一張往前約十公尺後右轉,(中華路往北,右轉正氣路之後)...有沒有發現,有沒有什麼地方怪怪的。
同樣是在台東市區,同樣的17級風。所以...同樣版本的OS安裝在同樣的主機上面時,每台主機都有接網路線,每條線都連到同一台Switch,有的主機網路卡的燈號不亮,有的主機網路卡登號正常。這時候,怎麼處理比較快?
再來像是,我從Google MAP Javascript API 複製範例到跟Cordova無關的一般的HTML檔,可以正常使用。
結果,放到Cordova裡面,有異常...
是那個Google MAP Javascript API造成異常? 還是我自己寫的部份,造成異常?
這個錯誤訊息,困擾我很久...
invalidValueError: in property origin: not a string; and not a LatLng or LatLngLiteral: not an Object; and not an Object
這個錯誤訊息,困擾我更久
TypeError: onSuccess is not a function
上述的兩個錯誤訊息,都是在測試Google MAP Javascript API,所遇到的。但,最後發現,跟Google MAP Javascript API無關...
下面,是遇到錯誤和正常的比較,供參考。
//這一段,和下一段,有什麼不同
function onDeviceReady() {
if ($('input[name=r_start]:checked').val() == 1) {
navigator.geolocation.getCurrentPosition(getSuccess, getError, getoptions);
var getSuccess = function (getposition) {
getlat = getposition.coords.latitude;
getlon = getposition.coords.longitude;
myCenter = new google.maps.LatLng(getlat, getlon);
alert('a');
}
} else {
myCenter = new google.maps.LatLng(23.0973591, 121.2023173);
alert('b');
}
}
//這一段,和上一段有什麼不同
$("#show_tree").on("click", function initMap() {
if ($('input[name=r_start]:checked').val() == 1) {
navigator.geolocation.getCurrentPosition(getSuccess, getError, getoptions);
var getSuccess = function (getposition) {
getlat = getposition.coords.latitude;
getlon = getposition.coords.longitude;
myCenter = new google.maps.LatLng(getlat, getlon);
alert('a');
}
} else {
myCenter = new google.maps.LatLng(23.0973591, 121.2023173);
alert('b');
}
});
再來是這個
//這一段,和下一段,有什麼不同
function onDeviceReady() {
$("#show_tree").on("click", function initMap() {
if ($('input[name=r_start]:checked').val() == 1) {
getCenter();
} else {
myCenter = new google.maps.LatLng(22.7969679, 121.121909);
getmap(myCenter);
}
});
}
//這一段,和上一段有什麼不同
$("#show_tree").on("click", function initMap() {
if ($('input[name=r_start]:checked').val() == 1) {
navigator.geolocation.getCurrentPosition(getSuccess, getError, getoptions);
var getSuccess = function (getposition) {
getlat = getposition.coords.latitude;
getlon = getposition.coords.longitude;
myCenter = new google.maps.LatLng(getlat, getlon);
alert('a');
}
} else {
myCenter = new google.maps.LatLng(22.7969679, 121.121909);
alert('b');
}
最後是這個
//這一段,和下一段,有什麼不同
var r_start; //開始的位置
var r_end; //結束的位置
var getlat;
var getlon;
var myCenter;
var map;
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
$("#show_tree").on("click", function initMap() {
if ($('input[name=r_start]:checked').val() == 1) {
getCenter();
} else {
myCenter = new google.maps.LatLng(22.7969679, 121.121909);
getmap(myCenter);
}
});
//這一段,和上一段有什麼不同
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
var r_start; //開始的位置
var r_end; //結束的位置
var getlat;
var getlon;
var myCenter;
var map;
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
}
上面六段JS碼,是這幾天,一直在改的,改到最後覺得,基本觀念,很重要...如果像我這樣一知半解...就要花好多時間,在錯誤中找原因...
(待)
2016/12/13 Sunallen