我正在使用instafeed.js开发一款应用。 Instafeed为我们提供了名为" template"所以我们可以在instagram中获取有关图像的信息。例如:标题,链接,喜欢,图像等
在这种情况下,我试图提取标题的值。 我在这里尝试过:
var str = "{{caption}}";
var harga = str.substring(str.lastIndexOf("(")+1,str.lastIndexOf(")"));
仅供参考:{{caption}}值为:" MotoGP Tshirt(150)"。我的目标是获取内部值(),以便最终输出为" MotoGP Tshirt,价格:150美元"。
当我尝试这个时:
var str = "MotoGP Tshirt (150)";
完美无缺。但是当我像这样使用{{caption}}时:
var str = "{{caption}}";
它不起作用。那么如何将{{caption}}存储到变量中,以便我可以生成价格。
完整源代码:
<script type="text/javascript">
$(document).ready(function() {
var str = "{{caption}}";
var harga = str.substring(str.lastIndexOf("(")+1,str.lastIndexOf(")"));
var userFeed = new Instafeed({
get: 'user',
userId: xxxxxxx,
accessToken: 'xxxxxxxx',
template: '<div class="col-md-3"><p><a href="{{link}}"><img src="{{image}}" width="100%" class="img img-thumbnail img-responsive img-rounded" /></a></p><p>{{caption}}</p><p><font color="#F12938"><i class="fa fa-heart"></i> {{likes}}</font></p>'+harga+'</div>',
sortBy : 'most-recent',
limit : 8,
resolution : 'standard_resolution',
filter: function(image) {
return image.tags.indexOf('carefour') >= 0;
}
});
userFeed.run();
$('#mybutton').on('click', function() {
userFeed.next();
});
});
</script>
感谢您的帮助。我真的需要帮助。
答案 0 :(得分:1)
请尝试以下操作,让我知道这是否有效:
$(document).ready(function() {
var str = "{{caption}}";
var harga = str.substring(str.lastIndexOf("(")+1,str.lastIndexOf(")"));
var userFeed = new Instafeed({
get: 'user',
userId: xxxxxxx,
accessToken: 'xxxxxxxx',
sortBy : 'most-recent',
limit : 8,
resolution : 'standard_resolution',
filter: function(image) {
if (image.caption && image.caption.text) {
// Do your logic to change text and assign it to below variable
image.my_caption = ''; // Assign variable here
} else {
image.my_caption = image.caption;
}
return image.tags.indexOf('carefour') >= 0;
},
template: '<div class="col-md-3"><p><a href="{{link}}"><img src="{{image}}" width="100%" class="img img-thumbnail img-responsive img-rounded" /></a></p><p>{{model.my_caption}}</p><p><font color="#F12938"><i class="fa fa-heart"></i> {{likes}}</font></p>'+harga+'</div>',
});
userFeed.run();
$('#mybutton').on('click', function() {
userFeed.next();
});
});
答案 1 :(得分:0)
正则表达式模式将从输入中获取(任何)字符串。然后你可以砍掉结果的第一个和最后一个字符,最后得到()之间的值。 如果你的数据总是以价格结尾的形式存在,你甚至不需要正则表达式,只能使用自己的函数并将第一个更改为indexOf而不是lastIndexOf。正则表达式也适用于像'Moto Helmet(120)size A'这样的字符串。如果大括号之间的数据始终是一个数字,则可以编辑正则表达式,只在需要时找到()之间的数字。
如果你想立即将字符串从'Something(150)'更新为'Something,Price:150'
,你也可以通过在字符串的replace()调用中使用正则表达式来扩展它。编辑:如果这是你的问题,你能解释一下吗?或者是您无法将{{caption}}转换为包含价格的字符串的问题?由于您的代码并未真正解释MotoGP字符串的来源。
var pattern = /\(.*\)/,
wrapped = pattern.exec('MotoGP Tshirt (150)'),
result = wrapped[0].substring(1, wrapped[0].length - 1);
console.log(result);