2017-03-21 109 views
0

我正試圖做一個功能,顯示不同的東西時,在標籤區域中由不同的ID調用。如何獲取調用函數的ID?

我讀過的答案類似的要求,但我無法弄清楚我的錯誤。

function Over() { 
 
     if (this.id == "cc") { 
 
      el = document.getElementById("Box1") 
 
      el.style.display = 'block'; 
 
     } else if (this.id == "mm") { 
 
      el = document.getElementById("Box2") 
 
      el.style.display = 'block'; 
 
     } else if (this.id == "ca") { 
 
      el = document.getElementById("Box3") 
 
      el.style.display = 'block'; 
 
     } 
 
    } 
 

 
    function Out() { 
 
     if (this.id == "cc") { 
 
      el = document.getElementById("Box1") 
 
      el.style.display = 'none'; 
 
     } else if (this.id == "mm") { 
 
      el = document.getElementById("Box2") 
 
      el.style.display = 'none'; 
 
     } else if (this.id == "ca") { 
 
      el = document.getElementById("Box3") 
 
      el.style.display = 'none'; 
 
     } 
 
    }
#Box1, #Box2, #Box3 { 
 
    display: none; 
 
    top: 250px; 
 
    width: 20%; 
 
    height: 100px; 
 
    background-color: red; 
 
    margin-left: 38%; 
 
    position: absolute; 
 
    border: solid; 
 
    border-color: black; 
 
    z-index: 100; 
 
    border-radius: 10px; 
 
    -moz-border-radius: 10px; 
 
    /* firefox */ 
 
    -webkit-border-radius: 10px; 
 
    /* safari, chrome */ 
 
    text-align: center; 
 
} 
 

 
#Box2 { 
 
    top: 450px; 
 
    width: 10%; 
 
    height: 100px; 
 
    background-color: green; 
 
    margin-left: 18%; 
 
} 
 

 
#Box3 { 
 
    top: 50px; 
 
    width: 3%; 
 
    height: 50px; 
 
    background-color: yellow; 
 
    margin-left: 0; 
 
}
<img src="ticinello2.jpg" id="imgmap" alt="Mappa" usemap="#parkmap"> 
 
<map name="parkmap" id="map"> 
 
    <area shape="poly" coords="326,196,321,370,424,283,426,197" target="_blank" alt="polycc" href="#" onmouseover=Over.call(this) onmouseout="Out.call(this)" id="cc" /> 
 
    <area shape="poly" coords="426,198,554,458,457,553,328,404,324,404,324,375" target="_blank" alt="polymm" href="#" onmouseover=Over.call(this) onmouseout="Out.call(this)" id="mm" /> 
 
    <area shape="poly" coords="328,405,324,412,325,675,330,681,451,554" target="_blank" alt="polyca" id="ca" href="#" onmouseover="Over.call(this)" onmouseout="Out.call(this)" /> 
 
</map>

+2

你傳遞的參數'this'到功能('在()','出()')不帶參數。給它們添加一個參數,使它們成爲'function Over(e){...}'和'Out(e){...}'函數,然後通過執行'e.id'而不是'this .id'。 – Santi

+0

@Santi Or,甚至更好,將它們更改爲'function Over(this){...}'。 – Feathercrown

+3

@Santi實際上,他沒有傳遞'this',他使用'call',它改變函數內部的'this'屬性。 – Feathercrown

回答

0

如下更改函數定義:

function Over(elm) { 
    // get id 
    var elementId = elm.id; 
} 

然後,用法如下:

<area .... id="cc" onclick="Over(this);" /> 

當調用Over方法這種方式,它是通過當前的HTML元素爲論據。

+0

我試過了,似乎在我的情況下工作 –

+0

我錯了,它的工作原理 –

相關問題