0

我正在构建的一个插件中有一个事件处理机制。我正在触发一个事件并希望将特定项目发送回事件处理程序参数。

在事件处理程序内部,我想更改插件中也应该更改它的项目。我在下面有一个相同的简单版本。

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);
};

主索引.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 回答