2015-08-03 3 views
0

Я пытаюсь передать свой объект в параметре в вызове fucntion: Не кажетсяПередача параметров из одного fucntion другого 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); 
}; 

не работает. Ты знаешь почему? Из-за цитат? Но когда я выставляю outta цитаты (например, CreateStyle(pCellule)), это работает. Merci !!

+0

'pCellule' сам входит в параметр. –

+0

Что такое 'CreateStyle()' функция? Можете ли вы предоставить рабочий jsfiddle.com? –

+0

@DavidHaim какой-либо выход из этой ситуации? –

ответ

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); 
+0

'JSON.stringify()' работает абсолютно нормально! Я передал свой объект и мог получить доступ ко всем его параметрам. Спасибо! Бог благословил! –

+0

что такое 'templateDiv' в вашем случае sir? как вы это заявили? Im делает 'lTemplate.appendChild (input)', он не работает! –

+0

Это DIV, в который вы хотите поместить этот HTML-код. 'var templateDiv = document.getElementById (" templateID ")' – Barmar

0

Ваш код будет работать только в том случае, если pCellule is и integer, любой другой контент не будет работать.

Если это строка, вам нужно поставить кавычки вокруг нее, и она будет работать.

Если это объект, который вы пишете в верхней части своего вопроса, тогда это невозможно, потому что вы сначала печатаете это, что покажет: Object, потому что вы пытаетесь напечатать объект.

Смежные вопросы