将两个变量传递给函数,然后附加HTML内容

时间:2016-05-25 17:30:04

标签: javascript

我有以下JavaScript代码:

 <script>
    var test1 = 44.22644865;
    var test2 = 17.66116217;

   $("#inner_poslovnica_info").append("<div class='sakrij_temp' id='detalji' onclick='PokreniMapu("test1,test2");'></div></div>");

 </script>

 <script>

  function PokreniMapu(sirina, visina){
        $("#google_mapa").show();
sirinaGeo = sirina;
visinaGeo = visina;
var myOptions = {zoom:16,center:new google.maps.LatLng(sirinaGeo, visinaGeo),mapTypeId: google.maps.MapTypeId.ROADMAP};
map = new google.maps.Map(document.getElementById("google_mapa"), myOptions);

marker = new google.maps.Marker({
map: map,position: new google.maps.LatLng(sirinaGeo, visinaGeo)});

//infowindow = new google.maps.InfoWindow({
//content:"<b>The Circle</b><br/>2880 Broadway<br/> New York" });

google.maps.event.addListener(marker, "click", function(){infowindow.open(map,marker);});
infowindow.open(map,marker);

}

 </script>

这不起作用。我无法使用onclick='PokreniMapu("test1,test2");'传递变量。

此外,`onclick =&#39; PokreniMapu(&#34; + test1,&#34;&#34; + test2 +&#34;);&#39;不起作用。

价值不是&#34;推&#34;到被调用的函数;因此,地图不会显示出来。

我使用append功能将HTML内容放入<div>标记中。可能是什么问题呢?

谢谢!

3 个答案:

答案 0 :(得分:0)

此行有错误:

$("#inner_poslovnica_info").append("<div class='sakrij_temp' id='detalji' onclick='PokreniMapu("test1,test2");'></div></div>");

当翻译到达PokreniMapu时(&#34;它认为"表示你打算关闭字符串,然后它会出错,因为它不了解其余部分。

以这种方式尝试:

$("#inner_poslovnica_info").append("<div class='sakrij_temp' id='detalji' onclick='PokreniMapu("+test1+","+test2+");'></div></div>");

这应该有效,因为test1和test2是数值。如果它们是字符串,你应该逃避一个简单的冒号:

$("#inner_poslovnica_info").append("<div class='sakrij_temp' id='detalji' onclick='PokreniMapu(\'"+test1+"\',\'"+test2+"\');'></div></div>");

答案 1 :(得分:0)

如评论中所述,以下行无效JavaScript:

$("#inner_poslovnica_info").append(
  "<div class='sakrij_temp' id='detalji' onclick='PokreniMapu("test1,test2");'></div></div>");

第二个双引号后跟一个变量名称,该名称无效。您还需要删除重复的结束</div>

您可以在那里使用连接,并注入+来获取此信息:

"<div ... onclick='PokreniMapu(" + test1 + "," + test2 + ");'></div>"

或者,如果test1test2变量在click事件时仍然具有正确的值,则可以将变量嵌入到函数调用中,就像函数调用一样。字符串:

"<div ... onclick='PokreniMapu(test1,test2);'></div>"

更好的选择

但我建议不要将代码添加为字符串。在我看来,最好按以下方式处理click事件:

$("<div class='sakrij_temp' id='detalji'>")
    .appendTo('#inner_poslovnica_info')
    .click(function() {
        PokreniMapu(test1, test2);
    });

或者,使用bind()

$("<div class='sakrij_temp' id='detalji'>")
    .appendTo('#inner_poslovnica_info')
    .click(PokreniMapu.bind(this, test1, test2));

答案 2 :(得分:0)

感谢所有人,我已经尝试了这个并且它有效。

onclick='PokreniMapu("+test1+","+test2+");' 

我也会尝试这个。我之前从未使用过bind(),我会试一试。