一般に、コンソールで受信したエラーはありません。だからあなたのオブジェクトを壊して、エラーを引き起こす可能性のあるものを見てみましょう。
var roomName = 'room_' + $(this).data('room-id');
beds_required_obj.roomName.single_beds_required = ...
上記コードでは、最初にbeds_required_obj
が存在するオブジェクトであると仮定しています。私たちは、あなたが使用されるように、これは確かに真実であることをコメントで確認できます。
var beds_required_obj = {};
今、このオブジェクトが存在するため、あなたがbeds_required_obj.anything_here
を呼び出すことができ、それが有効なコードになります。しかし、あなたがアクセスしようとしている子供は存在しないかもしれません。
次に、beds_required_obj.roomName
と書いてあります。これで、 'room_ID'ではなく、 'roomName'という名前の子オブジェクトにアクセスしようとしています。 roomName
変数に格納されている動的名にアクセスするには、角括弧を使用する必要があります。したがって:
beds_required_obj[roomName]
これは、動的に作成されたルーム名の子オブジェクトを返します。
実際にはroomName
(実際には 'room_123'など)に応じて、この子オブジェクトも存在しない可能性があります。存在しない場合、このオブジェクトの子にアクセスしようとすると、エラーが返されます。例えば、以下のコードを見て:何が起こっている
var beds_required_obj = []; // create an empty object
var roomName = 'room_1234'; // the name of our room
// this line below will throw an error because the room_1234 child object does not exist
beds_required_obj[roomName].single_beds_required = 2;
すると、未定義のオブジェクトの子としてsingle_beds_required
にアクセスしようとしているということです。
var beds_required_obj = []; // create an empty object
var roomName = 'room_1234'; // the name of our room
// now create the room child object
beds_required_obj[roomName] = {};
// now this line will work, as the room is a valid object that can have children assigned to it.
beds_required_obj[roomName].single_beds_required = 2;
注:この作業を行うには、余分な行が含まれるように上記のコードを変更する必要があります(IMO)より読みやすいコードでこのような何かをしたい場合は、私が使用します。
を
breds_required_obj[roomName] = {
single_beds_required: 2
};
あなたはほとんどそれを持っています。 'beds_required_obj [roomName] .single_beds_required = ... 'を使用してください。 –
@Matt Wey ....はい私はそれを試みました。 TypeError:beds_required_obj [roomName]が定義されていません – Nick
まずオブジェクトを 'beds_required_obj = {};'で初期化します。 – Adder