javascript
2013-05-09 140 views -1 likes 
-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 2013-05-09 07:19:33

+0

JavaScript接受任何類型作爲函數參數。你的代碼有問題。 – 2013-05-09 07:20:22

+0

wats'obj.Data [i] .jobid','obj.Data [i] .bidtime'中的值。展示更多代碼 – 2013-05-09 07:21:44

回答

0

我有字符串(實際上它的時間)的對象,但似乎只有整數允許被傳遞到函數

不可以,但數字(和布爾值,空和未定義)是唯一的基元,如果它們被串化,它們將爲它們自己產生一個有效值。做一個console.log(displayBidder)看看你生產的是什麼html。如果ID號將成爲

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

,但如果他們的字符串會成爲

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

(這是變量!),如果你使用的(非數組)對象它甚至會是

<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

相關問題