将参数从一个函数传递到另一个函数

时间:2015-08-03 10:09:15

标签: javascript

我试图在调用函数

时在参数中传递我的对象
lTemplate = "<input onkeyup='ClickedOne("+pCellule+")' type='text' value='" + pCellule.ValeurSaisie + "'";
//gb - Si la cellule est non editable
lTemplate += pCellule.StyleCellule.IsEditable == false ? " readonly " : "";
//gb - Appel la méthode de création du style CSS
lTemplate += CreateStyle(pCellule);
//gb - Ferme le template
lTemplate += "'></input>";


function ClickedOne(pInfo) {
    alert(pInfo); 
};

似乎没有用。你知道为什么吗? 因为报价? 但是,当我把引号(如CreateStyle(pCellule))放在一起时,它就起作用了。 的Merci !!

2 个答案:

答案 0 :(得分:0)

您的代码仅在pCellule为整数时才有效,任何其他内容都不起作用。

如果它是一个字符串,你必须在它周围加上引号,它会起作用。

如果它是你写在问题顶部的对象那么那是不可能的,因为你是第一次打印它,它会显示:Object,因为你正在尝试打印一个对象。

答案 1 :(得分:0)

您可以使用JSON.stringify()pCellule转换为对象文字的Javascript语法:

lTemplate = "<input onkeyup='ClickedOne("+JSON.stringify(pCellule)+")' type='text' value='" + pCellule.ValeurSaisie + "'";

请注意,传递给函数的参数将是pCellule对象的副本,因为我们首先将其转换为JSON。如果您需要传递对象本身(以便ClickOne可以修改它),则不能将其作为文本进行。您需要直接操作DOM元素,而不是HTML字符串,例如

var input = document.createElement("input");
input.type = 'text';
input.value = pCellule.ValeurSaisie;
input.onkeyup = function() {
    ClickedOne(pCellule);
}
if (!pCellule.StyleCellule.IsEditable) {
    input.readonly = true;
}
templateDiv.appendChild(input);