2013-12-15 129 views
0

獲得價值我這行onclick事件從javascript函數不工作

<td><a href="offer.php" onclick="location.href=this.href+'?key=' + getTableRow();return false;"><xsl:value-of select="product_name"/></a></td> 

當我試圖讓功能getTableRow(返回值),並顯示它HREF鏈接我拿鑰匙= undefined.Why發生了什麼?

這是我在

<script type="text/javascript"> 
function getTableRow() { 
    var rowIdx; 
    var rowData= []; 
    var selectedRow; 
    var rowCellValue; 
    if (!document.getElementsByTagName || !document.createTextNode) return; 
    var rows = document.getElementById('products_table').getElementsByTagName('tbody')[0].getElementsByTagName('tr'); 
    for (i = 0; i < rows.length; i++) { 

      rows[i].onclick = function() { 
      rowIdx = this.rowIndex; 
       selectedRow= this.cells; 
       for(j= 0;j<selectedRow.length;j++){ 
       rowCellValue= selectedRow[j].textContent || 
       selectedRow[j].innerText; 
       rowData.push('cell '+j+': '+rowCellValue); 
       } 

      } 
    } 
    return "Row #" +rowIdx+'. '+ rowData[i]; 
} 
</script> 

我嘗試了很多的解決方案,但沒有work..Please幫助HTML的腳本頭..

在開始的時候,我想的唯一一件事就是返回的rowIndex 。即使我得到undefined.Why發生了什麼?我的第一個代碼之前,我嘗試從用戶選擇的行中獲取內容。

<script type="text/javascript"> 
var userSelect; 
function getTableRow() { 
    if (!document.getElementsByTagName || !document.createTextNode) return; 
    var rows = document.getElementById('products_table').getElementsByTagName('tbody')[0].getElementsByTagName('tr'); 
    for (i = 0; i < rows.length; i++) { 

     rows[i].onclick = function() { 
      userSelect = this.rowIndex; 
      } 
    } 
    return userSelect; 
} 
</script> 
+0

究竟是你想什麼來完成,哪些部分是不工作?另外,你可以做一個小提琴嗎? – Snowburnt

+1

你不會在'getTableRow'裏面返回任何東西' –

+0

也許你的意思是'return'行在'getTableRow()'中,而不是'onclick'函數綁定到每行?爲什麼點擊處理程序需要返回一個字符串? – Barmar

回答

-1

它可能被引起

if (!document.getElementsByTagName || !document.createTextNode) return; 

如果您遇到不確定的。

我可以建議的最好的事情是拋出調試負載。 :

<script type="text/javascript"> 
function getTableRow() { 

    console.log("getTableRow function called"); 
    var rowIdx; 
    var rowData= []; 
    var selectedRow; 
    var rowCellValue; 

    if (!document.getElementsByTagName || !document.createTextNode) { 
     console.log(document.getElementsByTagName, document.createTextNode, "Returning early"); 
     return; 
    } 

    var rows = document.getElementById('products_table').getElementsByTagName('tbody')[0].getElementsByTagName('tr'); 
    for (i = 0; i < rows.length; i++) { 

      rows[i].onclick = function() { 
      rowIdx = this.rowIndex; 
       selectedRow= this.cells; 
       for(j= 0;j<selectedRow.length;j++){ 
       rowCellValue= selectedRow[j].textContent || 
       selectedRow[j].innerText; 
       rowData.push('cell '+j+': '+rowCellValue); 
       } 

      } 
    } 
    console.log("Returning correctly"); 
    return "Row #" +rowIdx+'. '+ rowData[i]; 
} 
</script> 

如果你使用Firefox讓自己http://getfirebug.com/看看如果你使用的是什麼控制檯輸出

鉻按F12鍵並單擊控制檯,看到怎麼說

如果您「再不能確定什麼文檔元素嘗試的可用:

https://developer.mozilla.org/en/docs/Web/API/Element

http://msdn.microsoft.com/en-us/library/ie/ms535862(v=vs.85).aspx

http://www.w3schools.com/jsref/dom_obj_document.asp

+0

沒有現代瀏覽器,那裏'if'會成功。 – Barmar

+0

是的,我每次都嘗試做某些工作undefined.You相信我必須嘗試刪除該行?謝謝 – user3071235

+0

謝謝我現在會嘗試.. – user3071235