0

私が構築しているプラ​​グインの 1 つにイベント処理メカニズムがあります。イベントをトリガーしていて、特定のアイテムをイベント ハンドラー パラメータに送り返したいと考えています。

内部では、イベント ハンドラーで、プラグイン内でも変更する必要がある項目を変更したいと考えています。以下に同じものの単純なバージョンがあります。

datafile.js

var data = {
    'Project': [
        {
            'StartDate': '02/20/2013',
            'EndDate': '03/30/2013',
            'Description': 'Description 1',
            'ProjectID': 'ID1'
        },
        {
            'StartDate': '02/20/2013',
            'EndDate': '03/30/2013',
            'Description': 'Description 2',
            'ProjectID': 'ID2'
        }
]
};

function onbuttonClick() {
    onClickInternal(data.Project[1].Description);
};

メイン index.html

<head>
    <script src="datafile.js"></script>
    <script type="text/javascript">
        function onClickInternal(description) {
            description = "This is the new description";
            document.getElementById("mydiv").innerHTML = data.Project[1].Description;
        };
    </script>
</head>

<body>
    <div id="mydiv"> </div>
    <input type="button" onclick="onbuttonClick()" value="Project"/>
</body>

dataオブジェクトまたはProject配列全体をイベント ハンドラー パラメーターとして渡しても意味がありません。特定のDescriptionアイテムを渡し、それを変更して、data配列でも変更されるようにするためです。これは JavaScript でどのように行われますか?

4

1 に答える 1

0

onClickInternal に arrayPos のみを設定できます。

function onbuttonClick() {
    onClickInternal(1);
};

function onClickInternal(projectPos) {
    data.Project[projectPos].Description = "This is the new description";
    document.getElementById("mydiv").innerHTML = data.Project[projectPos].Description;
};

またはコールバック メソッドを使用する

    function onbuttonClick() {
        onClickInternal(data.Project[1].Description, function(newDescription) {
            data.Project[1].Description = newDescription;
            return newDescription;
        });
    };


    function onClickInternal(description, setNewValue) {
        document.getElementById("mydiv").innerHTML = setNewValue("This is the new description");
    };
于 2013-02-19T07:30:13.123 に答える