3

機能に関して1つ問題がありlengthます。問題は、変数に複数のエントリがある場合、長さを完全に計算しますが、単一のエントリの場合、配列内の要素の量ではなく文字数の測定を開始することです。エントリが 1 つあるため、アラートに 1 を表示したいのですが、finance consultant18 と表示されています。

var win = Titanium.UI.createWindow({ backgroundColor:'#FFF' });
var tableView1=Titanium.UI.createTableView(); 
var Row = [];
Titanium.Yahoo.yql(
  'select * from html where url="http://..." '
  + 'and xpath="//tbody/tr/td/a/font" limit 25', 
  function(e) {
    results = e.data.font;
    results = results.content;
    alert(results.length);
    for (var i = 0; i < results.length; i++) {
      var rss = results[i];
      var rssRow = Titanium.UI.createTableViewRow({ ... });
      var titleLabel = Titanium.UI.createLabel({ ... });
      rssRow.add(titleLabel);
      Row.push(rssRow);
    };

    tableView1.setData(Row);
  });

win.add(tableView1);
win.open();
4

2 に答える 2

4

以下を試すことができます。

results = results.content;
if (typeof results === 'string')
  results = [results];
alert(results.length);

これresultで、文字列である a を強制的に 1 つの文字列の配列にすることができました。コードの残りの部分は変更せずに機能するはずです。

于 2012-11-10T20:33:18.883 に答える
2

slashingweaponの答えの行では、単純化されていますが、これを実行してみませんか?

var length = 0;

if(typeof results === "string") {
    length = 1;
} else {
    length = results.length;
}

alert(length);

シンプルでクリーンです。

于 2012-11-10T21:08:00.447 に答える