1

#currentWordホバーした中国語の単語の英訳にスパンを設定したいと思います。

そのために、カテゴリに基づいて単語をオブジェクトに保存しています。

var vocab = {
"pronouns" :
{
    'wǒ'    : 'I',
    'nǐ'    : 'You',
},
"nouns" : 
{
    'gǒu'   : 'dog'
},
"verbs" : 
{
    'bāng'  : 'help',
    'xún'   : 'search',
}

};

parseHoveredText次に、単語をcurrentWordスパンに送信するために呼び出します。

$("#currentWord").text(parseHoveredText(word));

parseHoveredText() 関数:

function parseHoveredText (word) {
  for (obj in vocab) {
      log(vocab[obj][word]);
      return vocab[obj][word];
  }
  return "";
};

「Ni」にカーソルを合わせると、英語の「You」が正しく出力されます

ここに画像の説明を入力

コンソール出力も正しいです:You


ただしbang、(「動詞」オブジェクト内)にカーソルを合わせると、何も出力されません。

ここに画像の説明を入力

コンソール出力は次のとおりです。Undefined

奇妙なことに、コメントアウトする//return vocab[obj][word];と、コンソールは関連する正しい英語の「ヘルプ」を出力しますが、それでも表示されませんspan...

何故ですか?

ありがとう!

4

3 に答える 3

4

オブジェクト全体を反復しvocab、単語が内部オブジェクトにあるかどうかを確認することさえせずに最初の反復に戻ります。

「Ni」にカーソルを合わせると「たまたま」機能します。これは、最初の反復のプロパティが であるように思われるためですnouns。しかし、「強打」は にないので、vocab.nounsになりますundefined

単語が各カテゴリに含まれているかどうかを確認し、見つかった場合は翻訳を返す必要があります。

for (obj in vocab) {
    if (word in vocab[obj]) {
        return vocab[obj][word];
    }
}
于 2013-08-30T19:08:38.043 に答える
1

返す前に、要素が現在の品詞に存在するかどうかを確認する必要があります。

function parseHoveredText (word) {
  for (obj in vocab) {
    if (vocab[obj][word]) {
      log(vocab[obj][word]);
      return vocab[obj][word];
    }
  }
  return "";
};
于 2013-08-30T19:09:47.197 に答える