Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

js オブジェクトのプロパティに代入するときにエラーが出る

解決したいこと

JavaScriptでオブジェクトから一つ下の階層の空のオブジェクトをもって来て、エレメントを代入したらエラーがでた

発生している問題・エラー

Uncaught ReferenceError: Invalid left-hand side in...

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

let nantokaObj = {
    numEle:function (num) {
        let num_input={};     //*1
        return num_input[num];
    },
}
...
for (let i = 0; i <= 9; i++){
    nantokaObj.numEle(i) = document.getElementById(i);//ここでエラー 
    nantokaObj.numEle(i).addEventListener('click',hoge);
}

ダメな理由の予想

4行目のnum_inputオブジェクトの中のnumプロパティがないので、returnしても意味がないのかなと思ったので、*1の下に

num_input.num = num;

を追加して空じゃなくしてから下で呼び出して上書きしてみたのですがそれでもうまく入りません。
nantokaObjに入れずにnum_inputをグローバルにしたら、うまくいきますがオブジェクトの練習ということで、オブジェクトに入れて呼び出して代入する形にしたいです。

0

2Answer

Q_A__js_オブジェクトのプロパティに代入するときにエラーが出る-_Qiita-2.png

単純にundefinedに値を突っ込もうとしているからでは?

あとnumEleという関数内の一時変数let num_input={}では、関数から抜けたらすぐに変数が開放されてしまうので、

nantokaObj.numEle(i) = ... // 仮に設定できたとしても
nantokaObj.numEle(i) // undefined

とやっても、もう設定した値はないと思います。

1Like

Comments

  1. @voyce_sakamoto

    Questioner

    undefindに値は入らいないということですかね、納得しました。わざわざ実行結果まで載せていただいて、ありがとうございます。

そもそも「js オブジェクトのプロパティに代入するとき」というのが質問者さんの勘違いですね。

nantokaObj.numEle(i) = ...は、nantokaObjオブジェクトのnumEleメソッドを実行した結果の値に何かを代入するというコードであり、プロパティへの代入を行うコードではありません。

たとえば"value" = "another_value";というコードがエラーになるように、値に値を代入することはできません。

1Like

Comments

  1. @voyce_sakamoto

    Questioner

    確かにです、、culageさんのいう「実行した結果の値に何かを代入する」という言葉で納得しました。ありがとうございました。
    今気づきましたがnantokaObjオブジェクトの中でnumEleオブジェクトの中でgetElementByIdしとけばいい話でした。

Your answer might help someone💌