[英]Javascript - double quotes in variable
我正在尝试使用javascript动态创建html标签。 请参考下面的代码。
function getPhotosSuccess(data) {
if (data.d.results.length > 0) {
var response = data.d.results;
var innerhtml = "";
$.each(response, function(key, value) {
var newItem = '<div class="item"><div class="well"><a href="' + value.ServerRelativeUrl + '" data-lightbox="roadtrip" data-title="' + value.ListItemAllFields.Image_x0020_Description + '"><img class="img-responsive" src="' + value.ServerRelativeUrl + '" alt=""></a></div><div><p>' + value.ListItemAllFields.Image_x0020_Description + '</p></div></div>';
innerhtml += newItem;
});
$("#masonryPicGallery .row:eq(0)").html(innerhtml);
} else {
console.log("empty response from server");
}
}
我的问题是,这里的变量value.ListItemAllFields.Image_x0020_Description
包含一个以双引号开头的字符串。
所以我的html呈现如下->
有人可以在这种情况下帮助我吗?
如果您使用的是jQuery(并且您的代码段中暗示有Lightbox属性),则可以使用它来避免使用不可靠的字符串串联来构建元素:
// create DOM entries without variables
var $newItem = $('<div class="item"><div class="well"><a data-lightbox="roadtrip"><img class="img-responsive" alt=""></a></div><div><p></p></div></div>');
// then populate the appropriate fields using jQuery DOM traversal
$newItem.find('a').attr({
'href': value.serverRelativeUrl,
'data-title': value.ListItemAllFields.Image_x0020_Description
}).find('img')
.attr('src', value.ServerRelativeUrl);
$newItem.find('p').text(value.ListItemAllFields.Image_x0020_Description);
我相信您应该只删除单引号之前的双引号,因为无论如何它们都包含在变量中。 像这样:
var newItem = '<div class="item"><div class="well"><a href="' + value.ServerRelativeUrl + '" data-lightbox="roadtrip" data-title=' + value.ListItemAllFields.Image_x0020_Description + '><img class="img-responsive" src="' + value.ServerRelativeUrl + '" alt=""></a></div><div><p>' + value.ListItemAllFields.Image_x0020_Description + '</p></div></div>';
如果您能够使用ES6或Babel(将ES6转换为较旧的浏览器的较旧的JavaScript),则还可以使用字符串模板,该模板使用反引号(“ 1”键的左侧)代替引号:
var newItem = `<div class="item"><div class="well"><a href="${value.ServerRelativeUrl}" data-lightbox="roadtrip" data-title="${value.ListItemAllFields.Image_x0020_Description}"><img class="img-responsive" src="${value.ServerRelativeUrl}" alt=""></a></div><div><p>${value.ListItemAllFields.Image_x0020_Description}</p></div></div>`;
尝试编码变量引号:
var variable = '"my test value" haha';
variable = variable.replace(/"/g, """);
console.log(variable);
这是带有编码的代码段:
<div class=""test"test">inspect this class</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.