2015-06-12 114 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>');