将 javascript onclick 事件附加到锚标记

Appending the javascript onclick event to anchor tag

我正在尝试将 onclick 事件附加到我的 Phonegap 应用程序。它将 link 到外部浏览器的位置。

我的代码:

pair +='<div class="card_background" style="background-image: url("http://placehold.it/600x200");" valign="bottom" class="card-header color-white no-border"><div class="card_overlay"></div><div class="animated_background"></div><h3 class="card-title">'+ results.rows.item(i).title +'</h3></div><div class="card-content"><div class="card-content-inner"><p class="color-gray event_details">Event Location:  <strong>'+ results.rows.item(i).eventlocation +'</strong></p><p class="color-gray event_details">Event Date: <strong>'+ date + " " + month + " " + year +'</strong></p><a href="#" onclick="window.open("'+ results.rows.item(i).eventOrganiserLink +'", _system, location=yes);">Google</a><br/></div></div>';

内部循环, 后来我将它附加到 div

我正在尝试添加:

<a href="#" onclick="window.open("'+ results.rows.item(i).eventOrganiserLink +'", _system, location=yes);">Google</a>

它给我错误

提前致谢

我已经稍微简化了您的代码。考虑以下因素:

var pair = '';
var eventOrganiserLink = '[EVENT ORGANISER LINK]';

pair += '<a href="#" onclick="window.open("'+ eventOrganiserLink +'", _system, location=yes);">Google</a>';

这将生成以下内容:

<a href="#" onclick="window.open("[EVENT ORGANISER LINK]", _system, location=yes);">Google</a>

onclick 属性以双引号 (") 开头,这意味着它将查找之后的第一个双引号来关闭它。就在 window.open( 之后,这意味着该部分是唯一的将被设置为 onclick 属性的东西。看看 Whosebug 代码框中的 onclick 属性中的颜色是如何不匹配的?

这有点棘手,因为我们混合引号(设置对变量)和双引号(作为该变量内的文本,稍后将用作 html - 所以它需要有效的)。

您可以对第一个 window.open 参数使用单引号,并在对 pair 变量的赋值中将它们转义,如下所示:

var pair = '';
var eventOrganiserLink = '[EVENT ORGANISER LINK]';

pair += '<a href="#" onclick="window.open(\''+ eventOrganiserLink +'\', _system, location=yes);">Google</a>';

这将产生:

<a href="#" onclick="window.open('[EVENT ORGANISER LINK]', _system, location=yes);">Google</a>

注意 [EVENT ORGANISER LINK] 周围的单引号。还要注意颜色现在匹配了。