0

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google AJAX Feed API - Simple Example</title>
    <!--<script type="text/javascript" src="http://www.google.com/jsapi"></script>-->
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript" src='jquery-1.4.2.js'></script>
    <script type="text/javascript">

    google.load("feeds", "1");
    function initialize() {
      var feed = new google.feeds.Feed("http://maps.google.com/maps/ms?ie=UTF8&hl=zh-CN&vps=1&jsv=259e&msa=0&output=georss&msid=109685068115364659392.00048b5b630141d82b83a");

      feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT);
      feed.load(function(result) {
          if (!result.error) {
            for (var i = 0; i < result.feed.entries.length; i++) {
              var entry = result.feed.entries[i];
             var guid=entry.xmlNode.getElementsByTagName("id") || entry.xmlNode.getElementsByTagName("guid") ||0
            //console.log($('id',entry.xmlNode.xmlDocument)||$('guid',entry.xmlNode.xmlDocument))
            console.log(guid)
            }
          }
        });
  }
    google.setOnLoadCallback(initialize);

    </script>
  </head>
  <body>
    <div id="feed"></div>
  </body>

我的代码什么也没得到,

我使用 jquery 的方法 text() 或 html() ,但不是太,

那我该怎么办。

谢谢

4

1 回答 1

0

尝试

$(entry.xmlNode).find('guid').text()

或者

$('guid', entry.xmlNode).text()

但是,你不能这样做:

$(something) || $(somethingElse)

因为,代码永远不会到达$(somethingElse),因为$(something)即使没有找到匹配项,它也会返回一个 jQuery 对象。一个对象(甚至是一个空的 jQuery 对象)是真实的,因此无论 的值是什么,表达式都会为真$(somethingElse),JavaScript 完全跳过对它的求值。这称为短路评估。如果您确实想先查找"id",然后查找"guid",然后尝试:

var xml = entry.xmlNode;
var guid = $('id', xml).text() || $('guid', xml).text() || 0;
console.log(guid);

这样做的原因是因为我们试图在表达式的每一步中获取一个字符串,而不是一个对象。空字符串在 JavaScript 中是虚假的,因此表达式如下:

"" || 42; // 42
"" || (40 + 2); // 42

将返回第二个表达式 (42) 作为结果。

于 2010-07-26T04:13:53.170 回答