1

1.欲しいratingClass = 'fresh' if rating > 59 OR if audience_rating > 70。どのように?で試しました

もし (レーティング > 59) || (視聴率 > 70) {

 var ratingClass = 'fresh';

コードは次のとおりです。

 if (rating > 59) {
    var ratingClass = 'fresh';
 } else if (rating > 0){
    var ratingClass = 'rotten';
 } else {
   var ratingClass = 'na';
 }
 if (audience_rating > 59) {
    var audienceClass = 'fresh';
 } else if (audience_rating > 0){
    var audienceClass = 'rotten';
 } else {
    var audienceClass = 'na';
 }
 $parentEl.addClass(ratingClass);

2. http://pastebin.com/UN8wcB7bの 114 行目に Uncaught TypeError: Cannot read property 'length' of undefined が表示されます。簡単に修正できますか、またはまったく心配する必要はありませんか?

私は JavaScript コーディングが初めてで、現在は実行して学習しようとしています。JavaScript を使用した Chrome 拡張機能の作成を学習するための推奨リソースはありますか?

ありがとう :-)

4

3 に答える 3

1

null 要素の長さを読み取ろうとしているからです。したがって、114 行目の if ステートメントで映画が null かどうかをテストする条件を追加すると、次のようになります。

if(data.movies && data.movies.length > 0)

ただし、この if ステートメントでコードの他の場所で使用されるデータを設定している場合は、この種の問題を完全に回避するために、他の場所にもこのようなチェックを配置する必要がある場合があります。

于 2013-07-06T13:31:31.927 に答える
1

1) の後の条件は、常に括弧で完全に囲むif必要があります:

// wrong
if (rating > 59) || (audience_rating > 70) {

// has to be:
if ( rating > 59  || audience_rating > 70 ) {

または、演算子の優先順位がわからない場合:

if ( (rating > 59)  || (audience_rating > 70) ) {

2)最初にmovies属性がdataresponeに存在するかどうかを確認する必要があります(存在しない場合、長さを呼び出すこともできないため):

// can throw error if data.movies === undefined
data.movies.length > 0

// the safe way, check data.movies first:
if (data.movies && data.movies.length > 0)

これは、長いバージョン*とほとんど同じです:

if (typeof(data.movies) === `undefined` && data.movies.length > 0)

* 正確ではありません。なぜこの記事を読んでください

于 2013-07-06T13:34:09.000 に答える
1

エラーは間違いなく意味します

typeof data.movies === "undefined"

これを避けるために私はお勧めします

...

$.getJSON(movieUrl, function(data){
    // data can be undefined becoz of various reasons and so is data.movies
    if(!(typeof data === "undefined") && !(typeof data.movies === "undefined")) {
    //put similar checks in ur code

...

于 2013-07-06T13:38:28.837 に答える