2012-02-24 144 views
0

我正在嘗試修改Google maps API v3方向腳本。我原本以爲合併變量等牢牢把握,但後來我遇到了這樣的問題:變量返回null

function calcRoute() { 
    var end = document.getElementById("start").value; 
    var street = document.getElementById("street").value; 
    var city = document.getElementById("city").value; 
    var state = document.getElementById("state").value; 
    var zip = document.getElementById("zip").value; 
    var start = street + ' ' + city + ' ' + state + ' ' + zip; 

    var request = { 
     origin:start, 
     destination:end, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 
    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     } 
    }); 
    } 

如果我創建開始的ID的輸入和改變

var start = document.getElementById("start").value; 

腳本再次工作。但我不能讓我的聯合變量的工作:

var start = street + ' ' + city + ' ' + state + ' ' + zip; 

如果我讓一個按鈕提醒(開始)它返回null ...我做錯了什麼?

更新:另外值得注意的是,

如果我運行:

onClick="alert(end)" 

<input id="end" name="destination" type="hidden" value="test" /> 

警報返回 「對象HTMLInputElement」 而不是 「測試」,因爲它應該。

+1

檢查各個變量,一個可能是NULL – Sparky 2012-02-24 23:53:52

+0

如果你發佈鏈接到您的頁面,或者交替使用JSFiddle之類的東西並將其發佈到那裏,我們可以在HTML和DOM以及所有內容的上下文中查看整個代碼。 – 2012-02-25 00:07:08

+0

如果您注意到第一行'var end = document.getElementById(「start」)。value;'它應該是'var end = document.getElementById(「end」)。value;'這修復了腳本,但我仍然無法得到警覺工作... – 2012-02-25 00:17:16

回答

1

如果你想提醒的「結束」的值輸入你需要做的:

onClick="alert(document.getElementById('end').value)" 

至於你開始爲空的問題,我不相信一個變量爲空,如果我試試這個:

null + " " + null 

我得到 「空空」(在Chrome和Firefox測試了)。 所以,我的問題是:你在哪裏嘗試訪問「開始」變量?它是來自它在其內部還是外部定義的功能的內部?您不能從calcRoute函數以外訪問該變量。

所以,如果你正在做的事情,如:

<input type="button" onclick="alert(start)" /> 

它註定要失敗的,而不是做這樣的事情:

var start; 
function calcRoute() { 
    var end = document.getElementById("start").value; 
    var street = document.getElementById("street").value; 
    var city = document.getElementById("city").value; 
    var state = document.getElementById("state").value; 
    var zip = document.getElementById("zip").value; 
    start = street + ' ' + city + ' ' + state + ' ' + zip; 

..... 
+0

非常感謝您的解釋。哈哈我正在做你說的會失敗的事情。至少現在它是有道理的,爲什麼它失敗。我只是有了一點頓悟,更多的是有意義的。再次感謝! – 2012-02-25 03:28:53