2015-05-11 18 views
0

我有一個iframe,我只想在顯示超鏈接時單擊。該iframe有一個特定的ID,我正在使用選擇器來抓取。 當我在javascript函數中指定iframe的id時,它工作得很好,但是當我嘗試從超鏈接的函數調用中傳遞id時,我沒有得到任何響應。無法發送id到javascript功能

這個作品

<a href="#" onclick="expandMap();"><h3>Map 1</h3></a> 
<iframe id="myiFrame" data-src="https://map.embed.url" width="100%;" 
height="700px" src="about:blank"> 
</iframe> 

<script> 
function expandMap() { 
    map = $("#myiFrame"); 
    map.attr("src", map.data("src")); 
} 
</script> 

這不

<a href="#" onclick="expandMap("#myiFrame");"><h3>Map 1</h3></a> 
<iframe id="myiFrame" data-src="https://map.embed.url" width="100%;" 
height="700px" src="about:blank"> 
</iframe> 

<script> 
function expandMap(id) { 
    map = $(id); 
    map.attr("src", map.data("src")); 
} 
</script> 

有什麼我做錯了嗎?

回答

1

你需要檢查你的報價。雙引號內不能有雙引號。您可以使用單引號:

<a href="#" onclick="expandMap('#myiFrame');"> 

P.S.我建議不要使用內聯JavaScript事件處理程序。就個人而言,我會做到這一點:

<a href="#" class="expandMap" data-frame="#myiFrame"><h3>Map 1</h3></a> 
<iframe id="myiFrame" data-src="https://map.embed.url" width="100%;" 
height="700px" src="about:blank"> 
</iframe> 

<script> 
$(function(){ 
    $('.expandMap').click(function(){ 
     var frame = $(this).data('frame'); 
     map = $(frame); 
     map.attr("src", map.data("src")); 
    }); 
}); 
</script> 
+0

謝謝!這是一個很好的解決方案,我沒有意識到使用內聯JavaScript事件處理程序是不好的做法。儘管代碼中有一個語法錯誤。您忘記關閉最後一個圓括號並在末尾添加分號。 – Matt

+0

@Matt:我不知道內聯處理程序本身是否壞,我只是不喜歡使用它們。使用JavaScript綁定事件更強大:-) –

4

您關閉調用內部的雙引號的功能:

onclick="expandMap("#myiFrame");" 

應該是:

onclick="expandMap('#myiFrame');"