2013-02-25 18 views
1

我有一個顯示大量圖像的HTML5畫布。我在畫布下方的頁面上也有一些簡單的HTML <p></p>標籤。將腳本添加到網頁以在光標懸停在HTML5畫布上的圖像上時更改段落的內容

我想在光標懸停在這些圖像上時更新<p></p>標記的內容,並在http://www.quirksmode.org/js/newmouseover.html處找到了一個快速教程,這似乎表明它可以教您如何執行此操作。

我跟着教程,但是,當我在瀏覽器中查看我的網頁現在,我得到的是說

getElementByTagName不是一個函數

我有一個控制檯錯誤之前沒有看過這個函數,我只是想知道它實際上是一個預先定義的函數,還是本教程的作者已經定義了它自己......?我看不到作者定義了該功能的頁面上的任何內容,所以我認爲它可能是預先定義的,但我不確定。有人知道嗎?

編輯

好了,所以修正錯字固定它,現在的功能將被調用。不過,我現在正在從我的window.onload函數中調用它,所以一旦頁面加載,該段落就已經更新 - 它實際上並不是以調用onmouseover事件爲條件。

window.onload功能如下:

window.onload = function() { 
    var sources = []; 
     sources[0] = document.getElementById("building").src, 
     sources[1] = document.getElementById("chair").src, 
     sources[2] = document.getElementById("drink").src, 
     sources[3] = document.getElementById("food").src, 
     /*There are roughly 30 lines like this adding images in the same way */ 

     if (document.getElementById) { 
      var x = document.getElementById('mouseovers') 
          .getElementsByTagName('IMG'); 
     } else if (document.all) { 
      var x = document.all['mouseovers'].all.tags('IMG'); 
     } else { 
      return; 
     } 
     for (var i = 0; i < x.length; i++) { 
      console.log("for loop adding onmouseovers is being called"); 
      x[i].onmouseover = displayAssetDescriptionTip(); 
     } 

    loadImages(sources, drawImage); 
    drawGameElements(); 
    drawDescriptionBoxes(); 

    stage.add(imagesLayer); 

}; 

我試圖移動if報表到一個名爲displayAssetDescriptionTip()功能,而這個功能現在看起來是這樣的:

function displayAssetDescriptionTip() { 
    if (document.getElementById) { 
     var x = document.getElementById('mouseovers') 
         .getElementsByTagName('IMG'); 
    } else if(document.all) { 
     var x = document.all['mouseovers'].all.tags('IMG'); 
    }else { 
     return; 
    } 
    for (var i = 0; i < x.length; i++) { 
     console.log("for loop adding onmouseovers is being called"); 
     x[i].onmouseover = displayAssetDescriptionTip(); 
    } 
    document.getElementById('tipsParagraph').innerHTML = "Assets are items that" 
     + " can be bought or sold for cash."; 
    console.log("displayAssetDescriptionTip being called"); 
} 

然而,onmouseover事件當我將光標懸停在已添加的圖像上時,似乎並沒有發射 - 爲什麼會這樣?

回答

0

getElementByTagName不是函數。 getElementsByTagName is :) :)

它是複數形式,因爲它返回與給定標籤匹配的每個元素。

+0

啊,太棒了,歡呼!我完全錯過了... – someone2088 2013-02-25 21:39:48

+0

該網站告訴我,我不能接受你的答案,再過10分鐘,那麼會做。 – someone2088 2013-02-25 21:40:27

+0

不用麻煩。需要任何幫助,你知道我們在哪裏! – christopher 2013-02-25 21:41:00

相關問題