2016-11-14 3 views
1

The json я получаю выглядит следующим образом:OnClick функции - переменная строка JSON не работает

Object: 
bpi:206000 
buyout:4120000 
itemId:133564 
itemName:"Spiced Rib Roast" 
name:"Flipflap" 
quantity:20 
timeLeft:"VERY_LONG" 
undercut:0 

Я заполнение таблицы с помощью функции JQuery .each.
Один из элементов установлен в режим срабатывания функции при нажатии.
Код толкая элементов в таблице выглядит следующим образом:

$.each(data, function(i, key){ 
    items.push('<tr class="tr1"><td><a onclick="getItemData(' + key.itemId + ',' + key.itemName')" rel="item=' + key.itemId + '"">' + key.itemName + '</a>' + "</td><td>" + getAmount(key.buyout) + "</td><td>" + key.quantity + "</td><td>" + ifUndercut(key.undercut) + "</td><td>" + key.timeLeft.replace('_', ' ') + "</td></tr>"); 
}); 

Проблема с этой части кода:

onclick="getItemData(' + key.itemId + ',' + key.itemName')" 

Этот фрагмент кода дает различные вариации недостающих синтаксических ошибок.
Переключение key.itemName с другим key.itemId делает работу onclick.
Это проблема форматирования строки?
Как я могу заставить его работать с key.itemName?

+0

'JSON Я get выглядит так: это проблема, что aint JSON –

ответ

4

Проблема заключается в том, что itemName является строкой, поэтому вам нужно обернуть ее в кавычки, когда она выводится. Вам также не хватает +, который будет конкатенировать строку после значения. Попробуйте это:

items.push('<tr class="tr1"><td><a onclick="getItemData(' + key.itemId + ',\'' + key.itemName + '\')" rel="item=' + key.itemId + '"">' + key.itemName + '</a>' + "</td><td>" + getAmount(key.buyout) + "</td><td>" + key.quantity + "</td><td>" + ifUndercut(key.undercut) + "</td><td>" + key.timeLeft.replace('_', ' ') + "</td></tr>"); 

Обратите внимание на добавление \' вокруг значения.

Я также настоятельно рекомендую вам исследовать использование как ненавязчивых, так и делегированных обработчиков событий, поскольку атрибуты событий on* очень устарели и их следует избегать, когда это возможно.

+0

Итак, почему бы не '$ ('') .addClass ('tr1')' вместо '' ''? –

+0

Спасибо, что сделал. Я не знал, что могу использовать \. Я пробовал каждую комбинацию «и», которую я мог придумать. – user45706

+0

@ TânNguyễn, вы тоже могли бы это сделать, хотя это просто сделало бы пример выше чрезвычайно подробным. Если у вас есть много HTML для добавления в DOM, я бы предложил вам обратиться к библиотеке шаблонов. –

1

Ваша проблема типы кавычек, которые вы используете, сочетание одинарных и двойных кавычек

onclick="getItemData(" + key.itemId + ",\"" + key.itemName"\")" 
0

вы пропустили оператор +: обновление это один:

 onclick="getItemData(' + key.itemId + ',' + key.itemName+')" 
+1

Как ваш ответ полезен? –

+0

Во-первых, ОП не указала, что они используют углы вообще. Во-вторых, даже если у них был ваш образец кода, совершенно не имеет отношения к их проблеме –

+0

oops sorry, я вставляю его с другой стороны. позвольте мне изменить ответ. Событие actully click on dynamic html будет доступно с помощью функции делегата. –

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