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

そのような文字列を属性に入れないでください。代わりにカンマ区切りの文字列を入れることができます。(そして、 data 属性を使用できます。)

例えば:

<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 に答える