我正在构建的其中一个插件中有一个事件处理机制。我正在触发一个事件,并希望将特定项目发送回事件处理程序参数。
在内部,事件处理程序,我想更改应该在插件内更改它的项目。我在下面有一个相同的简单版本。
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中完成的?
答案 0 :(得分: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");
};