2013-12-15 3 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 случиться, что?

Это мой сценарий на голове HTML

<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 помочь ..

В начале единственного, что я хочу, чтобы вернуть 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

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