我试图在调用函数
时在参数中传递我的对象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 !!
答案 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);