Передача объекта в функцию по клику

224
01 июня 2017, 09:34
var obj = JSON.parse(data);
$('.param').append('<div onclick="myFunc('+obj+')"></div>');

Получаю SyntaxError: missing ] after element list myFunc([object Object])

Не пойму, где косяк!?

Answer 1
var obj = JSON.parse(data);
for(var val in obj) {               
    $('.param').append('<li class="p_'+val+'"><div class="info"></div></li>').
      find('.p_'+val+' .info').
      click((function(aKey){
        return function() { setInfo(obj[aKey]); } 
      })(val));
}
Answer 2

Когда объект переводится в строку в выражении

'<div onclick="myFunc('+obj+')"></div>'

его строковое представление и есть "[object Object]". Таким образом, код который назначается в качестве клик-обработчика

myFunc([object Object]) 

что синтаксически ошибочно.

Вам может подойти вот это:

'<div onclick="myFunc('+data+')"></div>'

а лучше:

var obj = JSON.parse(data);
$('<div></div>').appendTo('.param').click(function(){
  myFunc(obj);
});

var data = '{"a":543, "c":123}'; 
 
function myFunc(item) { 
  console.log(item); 
} 
 
function testError() { 
  var obj = JSON.parse(data); 
  $('.param').append('<div onclick="myFunc('+obj+')">Error</div>'); 
} 
 
function testNoError() { 
  var obj = JSON.parse(data); 
  $('<div>No error</div>').appendTo('.param').click(function(){ 
    myFunc(obj); 
  }); 
}
.param > div 
{ 
  margin:5px; 
  border:solid; 
  background:green; 
  width:100px; 
  height:50px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="param"> 
</div> 
<button onclick="testError()">Error</button> 
<br/> 
<br/> 
<button onclick="testNoError()">No Error</button>

Answer 3
var obj = JSON.parse(data);
for(var val in obj) {               
    $('.param').append('<li class="p_'+val+'"><div class="info"></div></li>').find('.p_'+val+' .info').click(function(){setInfo(obj[val])});
}

Таким образом передается последнее значение объекта, в функцию setInfo(). Осталось догнать, как забиндить цикл...

READ ALSO
Адаптивная таблица

Адаптивная таблица

Задача - немного упростить процесс работы с таблицами на мобильных устройствахПростым превращением таблицы в блок не обойтись, так как при...

291
Передача нескольких параметров в ajax

Передача нескольких параметров в ajax

Суть в том: Есть форма, данные из которой ловит django view и, после нескольких операций, результат выводит с помощью render(request, '

286
Передача нескольких JSON массивов ajax jquery

Передача нескольких JSON массивов ajax jquery

У меня есть некий json файл: [{1},{2}] [{3},{4}]В этом файле есть 2 массива

332