0

こんにちは、Javascript でオブジェクトをいじっています。これは、別の .js ファイル内のオブジェクトです。

json-webservice.js

      //create object
function objdata(tool, product, details) {


    //create object properties
    this.tool = tool;
    this.product = product;
    this.details = details;


    //create object methods
    this.validate = function () {
        var error = 0;
        for (var prop in this) {

            if (this.hasOwnProperty(prop)) {
                if (prop != 'validate' || prop != 'submit') {
                    if (this[prop] == null || this[prop] == undefined || this[prop] == "") {
                        error += 1;
                    }
                }

            }
        }

        return error;
    }

    this.submit = function () {

        var error = this.validate();

        if (error > 0) {
            alert("errors: " + error);
        }
        else {
            alert(this.tool + " " + this.product + " " + this.details);
        }
    }

}


}

このスクリプトをページの先頭に含めますindex-main.html

次に、ドキュメントの準備ができたら、新しいオブジェクトを初期化して送信します。

$(document).ready(function () {

    var userdata = new objdata('5', 'Main Page', '9');
    userdata.submit();

});

私の質問は、なぜそれが警告するだけなのかです

---------------------------
Windows Internet Explorer
---------------------------
5
---------------------------
OK   
---------------------------

そしてそうではない

---------------------------
Windows Internet Explorer
---------------------------
5 Main Page 9
---------------------------
OK   
---------------------------

私がそうすべきだと思うように。オブジェクトは正しくコーディングされていますか? IE で報告された JavaScript エラーはありませんでした。

奇妙な部分は、json-webservice.js ファイルの内容 (上記のオブジェクト) をコピーでき、完全に機能することです。ただし、外部ファイルとしては機能しません。

4

1 に答える 1

2

this[prop]ではなく使用する必要がありthis.propます。前者は名前が の文字列でpropあるプロパティを検索し、後者は名前が文字どおり「prop」であるプロパティを検索します。

(あなたが持っていた出力を再現することができませんでした。書かれているように、それは単に「エラー」を警告しているだけで、上記の変更により目的の出力が得られました。)

于 2013-01-31T21:16:07.393 に答える