2016-07-22 14 views
0

私は何か間違っていると確信していますが、ウィンドウサイズに応じて値を設定できる方法はありますか?ここでオブジェクトプロパティの値を動的に変更する方法はありますか? JavaScript

はサンプルコードです:

var setNewValue; 
$(window).resize(function() { 
    if($(window).width() < 768) { 
    setNewValue = "less"; 
    } else { 
    setNewValue = "more"; 
    } 
}); 

var createObject = function(property) { 
    this.property = property; 
    this.showProperty = function() { 
    document.write(this.property); 
    }; 
}; 

var example = new createObject(setNewValue); 
example.showProperty(); 

//未定義

+2

ウィンドウのサイズを変更してイベントハンドラをトリガしていますか? –

+0

はい、ウィンドウサイズに応じて値を設定する必要があります。 –

+5

'setNewValue'と' property'はオブジェクトではありません。だから、参照がないのです。 – Bergi

答えて

0

var createObject = function(property) { 
 
    return { 
 
    property: property, 
 
    getProperty: function() { 
 
     return this.property; 
 
    } 
 
    }; 
 
}; 
 

 
var example = createObject(); 
 

 
$(window).resize(function() { 
 
    example.property = $(window).width() < 768 ? "less" : "more"; 
 
    document.write(example.getProperty()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

しかし、それはまた、サイズ変更関数で未定義を与える –

+0

@MykytaKhilai再チェックしてください、 –

+0

が働いているようです!ありがとう! –

0

あなたがここに競合状態を持っているように見えます。

  1. setNewValue変数は(それの値は、現時点ではundefinedある)
  2. resizeイベントハンドラは
  3. を定義している
  4. createObject()がある現在のsetNewValue値と呼ばれる定義されます。スクリプトを実行すると、何が起こっているかということです何のresizeイベントは、ステップ2と3の間にトリガませんがない限りcreateObject()を呼び出すときに、まだundefined

、あなたは常にsetNewValue = undefinedになってしまいます。

コードのスニペットを投稿しただけではわかりませんが、変数にアクセスするときに変数が既に設定されていることを確認する必要があります。たとえば、明示的にどこかに設定します。スクリプトの始めに。

関連する問題