2012-01-30 60 views
3

JavaScript以及我在下面做的事情似乎從我一直在做的所有Google RTFM中都正確,但它不起作用。所以我決定從我卡住以後伸出援手。從HTML內部調用JavaScript?

我有我的生活HTML的<頭>文件在JavaScript ...

<script type="text/javascript" src="http://example.com/scripts/scripts.js"></script> 

的內容是谷歌地圖API。之前我已經從DIV onMouseOver運行JavaScript。這樣我就可以多次運行腳本 - 因爲我需要每個頁面有多個不同的地圖(這是一個photoblog)。我知道這個劇本很有用,因爲它今天起作用了。

<div class="location" onmouseover="initalizeMap('gmaps1832588575', '42.102500,-72.587333')"></div> 

我想弄清楚如何從div的外部調用這個腳本。例如,總是顯示地圖的靜態div。所以,我的印象是我可以將initializeMap函數從onmouseover移出,並放入它自己的< script>部分。但是,它不起作用。下面是我有:

<div class="location"> 
<a href="http://maps.google.com/maps?q=40.756167+-73.978833&z=14" target="_blank">New York, NY, US</a> 

    <script type="text/javascript" language="JavaScript">initalizeMap('gmaps2021396674', '40.756167,-73.978833');</script> 

    <div class="map_holder"> 
    <div class="map" id="gmaps2021396674"> 
    </div></div></div> 

就像我說的,我需要這個多次運行,而此代碼的工作,當我在調用它從一個div的onMouseOver。

+0

你可能想看看javascript函數是如何工作的。這裏是如何使用和定義的功能,由W3 - http://www.w3schools.com/js/js_functions.asp。 – 2012-01-30 02:05:30

+0

謝謝,是的,我已經完成了Hello World函數,就像我說的,我現在的函數在從onmouseover調用時工作。試圖讓它在div外工作,但仍然使用隨機ID在稍後的過程中回調該div。 – Pat 2012-01-30 02:06:57

+0

你可以更精確些嗎,當你說「div以外」時,你會怎麼想? – 2012-01-30 02:10:53

回答

1

當您將代碼放入頁面內的腳本標記內時,只要該腳本標記被加載,它就會運行。這可能是在它所指的div已被加載之前,所以它不工作,因爲它運行得太早(mouseover方法起作用,因爲在加載qhole頁面之前,您無法進行鼠標懸停)。您可以嘗試將腳本標記移動到頁面的末尾,或者您可以從HTML body標記的onload事件中觸發它,或者您可以查看jQuery並使用$(document).ready()。

+0

我現在擁有的方式是,< script>在div加載到HTML之前加載,但它可能太快以至於無法抓取Google API。 如果我做onload,或者如果我加載它在頁面的末尾,那麼我只能加載腳本一次,對吧?由於這是一個照片博客,每頁最多可以顯示5個獨特的地圖,我怎樣才能最好地做到這一點? – Pat 2012-01-30 01:56:20

+0

難道你不能把它放在onload上,並從那裏做所有5? – 2012-01-30 02:08:09

+0

也許我可以,但爲了讓地圖加載5個獨特的地方,5張獨特的照片(5個獨特的div),我使用了一個隨機數生成器,以便腳本知道哪個div加載哪張地圖。不知道如何用onload來做到這一點。這是我通過 – Pat 2012-01-30 02:31:30

0

什麼情況會觸發對initializeMap的調用?以前,您在發生mouseOver時調用了它。如果您將其移出事件處理程序,它只會被調用一次。

東西必須觸發其調用。我想知道你想讓它被調用。你可能需要一個計時器嗎?

+0

好問題,一個計時器可能是合適的,但是因爲我需要腳本被調用5次,使用爲每個div生成的隨機ID,它提出了一個挑戰,我能夠運行腳本5次,使用相同的div ID的隨機數。 – Pat 2012-01-30 01:57:27