2010-05-31 8 views
1

J'ai un code qui a un caractère que JS ne gère pas correctement.Problème de caractère JS/JQuery

$(document).ready(function(){ 


    $.getJSON("http://sjama.tumblr.com/api/read/json?callback=?", 
     function (data){ 
      for (var i=0; i<data.posts.length; i++){ 

        var blog = data.posts[i]; 

        var id = blog.id; 
        var type = blog.type; 

        var photo = blog.photo-url-250; 

        if (type == "photo"){ 

         $("#blog_holder").append('<div class="blog_item_holder"><div class="blog_item_top"><img src='+photo+'/></div><div class="blog_item_bottom">caption will go here</div></div>'); 
        } 

      } 

     }); <!-- end $.getJSON 

}); 

Le problème est avec cette ligne:

var photo = blog.photo-url-250; 

après "blog." il lit étrangement la partie "url" à cause du tiret (-) entre les deux. Que puis-je faire pour résoudre ce problème?

Répondre

1

Vous devez accéder à la propriété entre crochets avec une chaîne littérale.

blog["photo-url-250"]; 

De même, lors de la création d'une propriété d'objet avec des caractères non valides (comme le trait d'union), vous utiliserez une chaîne littérale.

var blog = { 
       someProperty: "someValue",  // Name has valid characters. 
       "some-property": "some-value" // This name requires a string literal. 
      } 

Les caractères valides sont des lettres, des chiffres, des traits de soulignement et $.

+0

homme merci. ça a marché! –

+0

Heureux que cela a fonctionné. : o) – user113716

1

peut vous écrire comme blog ["photo-url-250"]

1

T chapeau est une propriété qui doit être enveloppé dans [] par exemple:

var photo = blog["photo-url-250"]; 
1

usage autre notation:

var photo = blog['photo-url-250'];