在href中传递JavaScript函数

时间:2016-01-23 12:28:07

标签: javascript jquery cordova

我正在研究VS2103 Cordova App。我创建了项目列表。当我按下项目时,我想将数据传递到另一个页面。我已经通过jQuery创建了这个列表。

这是我的代码:

for (var i = 0; i < data.length; i++) {
    if ((Provider == "Doctors")) {
        $("#list").append('<li class="list-message" ><a class="w-clearfix w-inline-block" href="javascript:ProviderDetails(' + data[i].DoctorName + ',' + data[i].DoctorAddress + ',' + data[i].DoctorPhone + ',' + data[i].DoctorPhone2 + ',' + data[i].DoctorPhone3 + ',' + data[i].DocLat + ',' + data[i].DocLong + ',' + data[i].DoctorNotes + ',' + data[i].Category + ');" data-load="1"><div class="w-clearfix column-left"><div class="image-message"><img src="images/Doctors.png"></div></div><div class="column-right"><div class="message-title">' + data[i].DoctorName + '</div><div class="message-text">' + data[i].DoctorAddress + '</div></div></a></li>');
    }
}

这是我的功能:

 function ProviderDetails(Name, Address, Tel, Phone2, Phone3, Lat, Lang, Notes, Category) {
          localStorage.setItem("Name", Name);
          localStorage.setItem("Address", Address);
          localStorage.setItem("Tel", Tel);
          localStorage.setItem("Phone2", Phone2);
          localStorage.setItem("Phone3", Phone3);
          localStorage.setItem("Lat", Lat);
          localStorage.setItem("Lang", Lang);
          localStorage.setItem("Notes", Notes);
          localStorage.setItem("Category", Category);
          window.location.href = "../Details.html";
      }

当我按任何项目时,它没有做任何事情。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

注意你如何构建字符串:

href =&#34; javascript:ProviderDetails(&#39; + data [i] .DoctorName +&#39;,&#39; ......

你需要添加字符串分隔符:

href =&#34; javascript:ProviderDetails(\&#39;&#39; +&#34; data [i] .DoctorName&#34; +&#39; \&#39;,\&# 39;&#39; .....

您的功能声明为:

function ProviderDetails(Name, Address, Tel, Phone2, Phone3, Lat, Lang, Notes, Category)
{
....
}

现在,因为您的函数需要字符串作为输入,所以您可以将函数称为:

ProviderDetails(&#39; string1&#39;,&#39; string2&#39;,.....)

你的javascript循环产生:

ProviderDetails(string1,string2,.....)

对于javascript,现在将参数视为变量,即string1不再是字符串,而是包含在变量string1中的值。 但是因为你没有这样的变量,你的函数调用不起作用。

因此,分隔符对于指示js理解字符串的开头和结尾非常重要。

作为分界符,您可以使用符号:&#39;或&#34;。

但是如果你想在字符串中使用它,你需要转义分隔符:

var a =&#39;这不是一个字符串&#39 ;; //错误,因为内部分隔符未被转义。

var a =&#39;这不是一个字符串&#39 ;; // OK,因为内部分隔符已转义

当然,如果你在字符串中使用另一个分隔符,则不需要将其转义。

var a =&#34;这不是一个字符串&#34 ;; //这没关系