2011-08-01 60 views
-1

我打電話jQuery的成功,如下javascript函數名,但我沒能獲得p在JavaScript的沒能值從jQuery的成功傳遞給javascript函數

success: function(result) { 
var htmlString = [result]; 
     for (i = 0; i < htmlString.length; i++) { 
      var p = htmlString[i].Number; 
      $('#MyGrid tbody').append('<tr><td><a rel="' + p + 
       '" href="#" onclick="filename(p);" class="filePreview"></a></tr>'); 
     } 
    } 

如何在文件名才能計算P ?

感謝,

michaeld

+2

什麼是'htmlString'?或者是你的問題'onclick =「filename(p);」'(這也是一個問題;))? –

+0

不好意思編輯了這個問題,問題是要把p傳給javascript – michael

+0

你好啊濫用[rel屬性](http://www.w3.org/TR/html4/struct/links.html#adef-rel),這並不意味着「在這裏存儲任意數據」,所以不要這樣做。 – Quentin

回答

2

嘗試 -

success: function(result) { 
for (i = 0; i < htmlString.length; i++) { 
        var p = htmlString[i].Number; 
        $('#MyGrid tbody').append('<tr><td><a rel="' + htmlString[i].Number+ '" href="#" onclick="filename(' + p + ');" class="filePreview">/a></tr>'); 
      } 
+0

只要'p'是一個原始值(很可能)就可以工作。 –

+0

即使它不工作可能與該語法javascript沒有通過任何值。 – michael

0

沒有在代碼中的錯字,你不關閉一個標籤

+0

它只是在編輯!爲了這個 – michael

1

htmlString是數組長一個。沒有必要循環它。它看起來你我可以做:

success: function(result) { 
    $('<tr />').append(
     $('<td />', { 
      rel: result.Number, 
      href: '#', 
      'class': 'filePreview', 
      click: function() { filename(result.Number)} 
     }) 
    ).appendTo('#MyGrid tbody'); 
} 

Btw。如果a元素不包含任何文字,則沒有人能夠點擊該鏈接。


除了可能的其他可能的錯誤/不良做法,爲什麼onclick="filename(p);"不起作用?

你之前聲明的p不在任何範圍內,當對filename(p)進行評估(點擊)時,可以訪問該範圍。它僅在success處理程序本地。在字符串中寫入字符p與當前作用域中的變量p完全無關。