2013-05-09 5 views
-1

Было много сообщений о передаче параметров в Javascript, но, похоже, никто не разрешил мою проблему здесь. Поэтому я надеюсь, что вы сможете мне помочь.Как передать параметр объекта функции Javascript

У меня есть объект строки (на самом деле его один раз), но это, кажется, что только целые числа могут быть переданы в функцию

Может быть проблема синтаксиса?

displayBidder += "<button class='btn'><a href='javascript:void(null);' onClick='decline(" + obj.Data[i].jobid + ", " + obj.Data[i].bidtime + ") '>Decline</a></button>" 

function decline(jobid, time){ 

    alert(time); 

} 

$("#display").html(displayBidder); 
+1

Это намного более чистый, если вы не используете onclick = xxx, а используете прослушиватель событий. – jfriend00

+0

JavaScript принимает любой тип как аргумент функции. Что-то не так с вашим кодом. –

+0

wats значение в 'obj.Data [i] .jobid',' obj.Data [i] .bidtime'. Показать еще код. –

ответ

0

У меня есть объект строки (на самом деле его один раз), но это, кажется, что только целые числа могут быть переданы в функцию

Нет, но числа (и булевы, нулевой и undefined) являются единственными примитивами, которые приносят значение eval для себя, если они строятся. Сделайте console.log(displayBidder), чтобы узнать, какой html вы создаете. Если идентификаторы номер станет

<button … onClick='decline(1, 2) '>Decline</button> 

но если они ниточка станет

<button … onClick='decline(one, two) '>Decline</button> 

(которые являются переменными!), И если вы использовали (не массив) объекты было бы даже be

<button … onClick='decline([object Object], [object Object]) '>Decline</button> 

Это означает, что вам необходимо правильно сериализовать значения, чтобы их можно было интерпретировать. JSON.stringify может это сделать, но есть гораздо лучшее решение:

Используйте надлежащие обработчики событий. Атрибуты встроенных событий отклоняются, особенно если они созданы js. Вместо этого используйте

$("#display") 
    .html(displayBidder) 
    .append($("<button class='btn'>Decline</button>").on("click", /*(function(i) { 
     return*/ function(event) { 
      alert(obj.Data[i].jobid); 
      // and do whatever you want 
     }/*; 
    })(i)*/)); 

раскомментируйте IEFE, если вы используете этот фрагмент кода в цикле и i изменилось, когда обработчик выполняется. См. JavaScript closure inside loops – simple practical example для получения информации