我有下面的代码尝试(不成功)从下面输出的字符串中删除最后一个逗号。
jQuery(function($){
var string = "{image : 'melbourne.jpg'},{image : 'tunnel.jpg'},{image : 'building.jpg'},";
$.supersized({
slide_interval : 3000,
slides : [ string.substring(0, string.length - 1) ]
});
});
但我需要的是:
jQuery(function($){
var string = "{image : 'melbourne.jpg'},{image : 'tunnel.jpg'},{image : 'building.jpg'},";
$.supersized({
slide_interval : 3000,
slides : [ {image : 'melbourne.jpg'},{image : 'tunnel.jpg'},{image : 'building.jpg'} ]
});
});
我尝试了很多不同的东西,但无济于事。我不确定我做错了什么!!
答案 0 :(得分:1)
您的str.substring(0, str.length - 1);
但是您没有正确创建字符串对象var string = '{image : 'melbourne.jpg'},{image : 'tunnel.jpg'},{image : 'building.jpg'},';
。首先,你不需要它周围的引号。其次,它是畸形的。第三,听听elclanrs!
答案 1 :(得分:0)
不要使用javascript对象传递使用字符串的数据。
jQuery(function($){
var slides = [{image : 'melbourne.jpg'},
{image : 'tunnel.jpg'},
{image : 'building.jpg'}];
$.supersized({
slide_interval : 3000,
slides : slides
});
});
你可能会说字符串来自服务器端,那么你应该修复服务器端的数据,让它可以解析为javascript对象。
但如果你不听我的建议并坚持使用该字符串,你可能会触及eval
邪恶。
jQuery(function($){
var string = "{image : 'melbourne.jpg'},{image : 'tunnel.jpg'},{image : 'building.jpg'},";
$.supersized({
slide_interval : 3000,
slides : eval("["+string.substring(0, string.length - 1)+"]")
});
});
答案 2 :(得分:0)
您需要先处理数据:
var imageStr = "{image : 'melbourne.jpg'},{image :'tunnel.jpg'},{image :'building.jpg'},";
imageStr = imageStr.substring(0, imageStr.length - 1)
imagesArray = imageStr.split(',');
var jsonObj;
var imageList = [];
for(var i = 0; i < imagesArray.length; i++){
jsonObj = eval("("+imagesArray[i]+")");
imageList.push(jsonObj);
}
var data = JSON.stringify(imageList);
处理完毕后,您可以使用数据变量:
slider: data