2015-06-12 113 views
3

我試圖通過輸入通過href調用javascript函數?

infowindow.setContent("<table><tr><th>Name</th><td><a href='javascript:Institute('"+code+"')'>" + text + "</a></td></tr><tr><th>IP Address</th><td>" + ip + "</td></tr><tr><th>Code</th><td><a href='javascript:Institute();'>" + code + "</a></td></tr></table>"); 
+0

你是如何傳遞參數的工作? – Nitish

+2

在JavaScript中混合使用JavaScript中的字符串來製作帶有JavaScript的HTML是令人頭疼的祕訣。不要這樣做。使用DOM。使用'createElement'。使用'createTextNode'。使用'appendChild'。使用'addEventListener'。你的代碼將更加冗長,但無限理解,調試和維護。 – Quentin

+0

我只是很好奇:在href而不是onclick事件中做這件事有什麼好處嗎? – Niko

回答

2

這應該工作:

infowindow.setContent('<table><tr><th>Name</th><td><a href="javascript:Institute(\''+code+'\')">' + text + '</a></td></tr><tr><th>IP Address</th><td>' + ip + '</td></tr><tr><th>Code</th><td><a href="javascript:Institute();">' + code + '</a></td></tr></table>'); 

這樣的結果HTML有標籤的屬性和單引號(')爲JavaScript字符串,這是爲了確保不發生衝突的最佳途徑雙引號(")。

爲了演示,這裏採用document.write()alert()在代替,但如果你點擊運行的代碼片段

var code = 'The Code'; 
 
var text = 'The Text'; 
 
var ip = 'The IP'; 
 

 
document.write('<table><tr><th>Name</th><td><a href="javascript:alert(\''+code+'\')">' + text + '</a></td></tr><tr><th>IP Address</th><td>' + ip + '</td></tr><tr><th>Code</th><td><a href="javascript:alert(\'empty string\');">' + code + '</a></td></tr></table>');

1

你必須與你的報價有問題的錯誤意外結束通過HREF調用javascript函數(不帶參數),它工作正常,但相同的函數調用(帶有參數)它。 使用:<a href='javascript:Institute(\'"+code+"\')'>

如果您從Web瀏覽器使用HTML調試器,您可以很容易地找到它。

+0

它不能正常工作 – javasundaram

0
infowindow.setContent('<table><tr><th>Name</th><td><a href="javascript:Institute(\""+code+"\");' + text + '</a></td></tr><tr><th>IP Address</th><td>' + ip + '</td></tr><tr><th>Code</th><td><a href="javascript:Institute();">' + code + '</a></td></tr></table>');