2

我有一个数组作为链接上的属性。

这是数组

images="["one.jpg","two.jpg"]"

我将如何解析这个数组并将它读回给我 one.jpg,two.jpg?

这就是我现在正在做的事情,它给了我一个错误。我不相信 json 解析是这里需要的。

var imgs = $("#"+number).attr("images");
var imgList = jQuery.parseJSON(imgs);

编辑:实际代码

var number = $(this).attr("data-id");

var url = $("#"+number).attr("url");
$(".portfolio-url").html("<h3 class='pacifico'>url</h3><p><a href='http://"+url+"' target='_blank'>"+url+"</a></p>");

var cli = $("#"+number).attr("client");
$(".portfolio-client").html("<h3 class='pacifico'>client</h3><p>"+cli+"</p>");

var pgs = $("#"+number).attr("pages");
pgs = pgs.replace(/\[/g,"");
pgs = pgs.replace(/\]/g,"");
pgs = pgs.replace(/\"/g,"");
var pages = new Array();
pages = pgs.split(",");

var img = $("#"+number).attr("images");
img = img.replace(/\{/g,"");
img = img.replace(/\}/g,"");
img = img.replace(/\"/g,"");
var images = new Array();
images = img.split(",");

var portSkills = "<h3 class='pacifico'>skills</h2>";
portSkills += "<p>";
for (i=0;i<pages.length;i++) {
if (pages[i] != "Clients") {
var finalPage = "";
for (j=0;j<pages[i].length;j++)
{
var ch = pages[i].charAt(j);
if (ch == ch.toUpperCase()) {
finalPage += " ";
}
finalPage += pages[i].charAt(j);
}
portSkills += finalPage+"<br />";
}
}
portSkills += "</p>";
$(".portfolio-skills").html(portSkills);

var imgs = $("#"+number).attr("images");
var imgList = jQuery.parseJSON(imgs);

基本上,它通过参数循环

4

5 回答 5

2

我鼓励您将属性值格式修改为以下内容:

<div id="one" data-images="file1.jpg,file2.jpg">Foo, Bar</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

注意这里我使用了一个有效的data-属性,这个属性的值只是一个逗号分隔的文件名列表。无需放置[]放入此值即可获取数组。

现在,要获取您的数组:

var images = $("#one").data("images").split(",");

这导致以下数组:

["file1.jpg", "file2.jpg"]
于 2012-12-04T15:08:48.253 回答
1

不要将那种字符串放在属性中,您可以只放置一个逗号分隔的字符串。(你可以使用数据属性。)

例如:

<a id="foo" data-images="one.jpg,two.jpg">foo</a>

那么你可以通过以下方式获得它:

var imgList = $('#foo').data('images').split(',');
于 2012-12-04T14:38:51.483 回答
0
for (var i = 0; i < images.length; i++) {
    var image = images[i];
}
于 2012-12-04T14:33:01.870 回答
0

对于初学者:

images = ["one.jpg", "two.jpg"];是一个数组,你的无效。

让它读回给你

for(image in images)
    console.log(images[image]);

或 jQuery 方式

$.each(images, function(index){
        console.log(images[index]);
});

如果它是你需要拆分的字符串,那么当然是如果字符串看起来像这样

var img = '["one.jpg", "two.jpg"]';

var images = img.replace(/\[|\]|"| /g,'').split(',');

这将为您提供一个从看起来像数组的字符串解析的数组。

于 2012-12-04T14:33:58.970 回答
0

试试这个join() 方法:

images.join();

=> "one.jpg,two.jpg"

images.join(", ");

=> "one.jpg, two.jpg"

编辑:声明你的Array

var images = ["img1", "img2", "img3"];

或者

var images = new Array("img1", "img2", "img3");

然后您可以使用该join()方法,如果仍然不起作用,请尝试以下方法:

// should be true, if not then you don't have an Array
var isArray = (images instanceof Array); 
于 2012-12-04T14:45:14.730 回答