2010-09-02 59 views
3

我正在使用eBay JavaScript Finding API。 findItemsAdvancedResponse对象的货币id成员定义为@currencyId。所以,我检索此值:eBay JavaScript API - 对象成员名称中的@符号

function _cb_findItemsAdvanced(root) { 
    var items = root.findItemsAdvancedResponse[0].searchResult[0].item || []; 
    var html = []; 
    if (items.length == 0) { 
     html.push('No Results'); 
    } 
    for (var i = 0; i < items.length; ++i) { 
     var item  = items[i]; 
     var title = item.title; 
     var pic  = item.galleryURL; 
     var viewitem = item.viewItemURL; 
     var price = Number(item.sellingStatus[0].currentPrice[0].`__value__`).toFixed(2); 
     var currency = "" 
     var currency = item.sellingStatus[0].currentPrice[0][email protected]; 
     if (null != title && null != viewitem) { 
      html.push('<div class="item-layout5"><table><tr><td><div style="width:102px;overflow:hidden;">'); 
      html.push('<a href="' + viewitem + '" target="_blank" rel="nofollow"><img src="' + pic + '" border= "" alt="' + title + '" /></a></div></td>'); 
      html.push('<td><span class="itemname"><a href="' + viewitem + '">' + title + '</a></span></td></tr>'); 
      html.push('<tr><td><img src="PTMFOG0000000064.gif" alt="" /></td><td><span class="buyprice">' + currency + ' &#36;' + price + '</span></td></tr></table></div>'); 
     } 
    } 
    document.getElementById("results").innerHTML = html.join(""); 

} // End _cb_findItemsByKeywords() function 

这对于Firefox浏览器,而不是谷歌Chrome或IE浏览器(我得到一个编译错误)工作正常。

在JavaScript中可接受的成员名称中使用@符号吗?我可以使用哪种解决方法,以便上面的代码可以在所有浏览器中使用?

感谢...

回答

6

在JavaScript中,语法

foo.bar 

相当于

foo['bar'] 

,后者的作品,即使 '酒吧' 不是一个有效的标识符名称,如在这种情况下。

+0

很酷 - 感谢JavaScript noob!只是为了完成这些事情,以下代码行适用于IE,Firefox和Chrome: var currency = item.sellingStatus [0] .currentPrice [0] ['@ currencyId']; – igotmumps 2010-09-02 16:14:54

+0

@igotmumps没问题。 :-) – LarsH 2010-09-02 19:19:05

+0

+1提示我的召回!我们正在将XML解析为JSON,并且无法引用生成的@attributes对象。 – Benxamin 2011-04-26 16:42:03

相关问题