2015-06-22 5 views
0

Я пытаюсь удалить строку на основе значения ячейки таблицы.Как удалить строку в html на основе значения ячейки

На моей странице HTML у меня есть простая функция поиска. Он отправил значения в текстовое поле в базу данных через ajax, затем PHP, а затем PHP создаст таблицу динамически на основе того, что находится в базе данных.

Я попытался проверить ячейку в таблице на определенное значение, так что если она истинна, то текущая строка будет удалена, имя функции - checkMatch(). Однако это не сработает.

Это кнопка в HTML, остальная часть HTML это просто текстовое поле и выпадающее окно:

<input type="button" id="device_search" value="Search" onclick="searchDevice(); checkMatch();"></input> 

Это функция во внешнем JavaScript файл:

function checkMatch() 
{ 
    var row = document.getElementById("thisRow"); 
    var cell = Row.getElementById("match"); 
    if(cell[0].innerText = "0%") 
    { 
     row.deleteRow(this); 
    } 
} 

А вот творящий таблицы в PHP:

if($num_row) 
{ 
    echo "<table id=\"myTable\" border=\"1\">"; 
    echo "<tr> 
    <th>Board ID</th> 
    <th>Tester Name</th> 
    <th>Board Name</th> 
    <th>Current Slot</th> 
    <th>Log Created</th> 
    <th>Required Slot</th> 
    <th>Match</th> 
    </tr>"; 

    while($row = mysql_fetch_assoc($result)) 
    { 
     $board_id = $row['board_id']; 
     $tester_name = $row['tester_name']; 
     $board_name = $row['board_name']; 
     $config = $row['config']; 
     $log_created = $row['log_created']; 
     $req_config = $row['configuration']; 

     $exploded = explode(",", $req_config); 
     $count = count($exploded); 

     $j = 0; 

     foreach($exploded as $value) 
     { 
      $number = strlen($value); 
      $arr = str_split($value, $number); 

      if(in_array($config, $arr)) 
      { 
       $j += 1; 
       $j /= ($count/100); 
       echo $j; 
      } 
      else 
      { 

      } 
     } 

     echo "<tr id = \"thisRow\"> 
        <td>$board_id</td> 
        <td>$tester_name</td> 
        <td>$board_name</td> 
        <td>$config</td> 
        <td>$log_created</td> 
        <td>$req_config</td> 
        <td id = \"match\">$j%</td> 
       </tr>"; 
    } 
    echo "</table>"; 
} 

столбец, я проверяю на это л столбец ast, который является колонкой Match. Моя идея - удалить эту текущую строку всякий раз, когда значение ячейки Match равно 0%. Я не могу найти, что не так с моими кодами, я не очень хорошо манипулирую с элементами DOM, чтобы не было ошибок. Любая помощь по этому поводу? Или есть другие способы, через PHP и т. Д.?

Примечание: я не пытаюсь удалить строку из базы данных. Я просто хочу удалить строку, когда Match - 0%.

EDIT, коды searchDevice() во внешнем файле JS:

function searchDevice() 
{ 
    var device_name = $("#device_name").val(); 
    var tester_type = $("#tester_type").val(); 
    var page = "database.php"; 

    if(device_name==""||tester_type=="") 
    { 
     alert("Please do not leave any blanks."); 
    } 
    else 
    { 
     $.post(page, { 
      device_name : device_name, 
      tester_type : tester_type, 
      action : "search" 
      }, function(data) { 
      $("div#display_board").html(data); 
      checkMatch(); 
     }); 
    } 
} 

В настоящее время мой стол имеет дисплей со всеми нужными значениями, но это не приводит к удалению строки с 0%.

+0

если 'searchDevice()' является вызовом ajax, к тому времени, когда проверяется 'checkMatch()', результат поиска еще не возвращен. Вам нужно выполнить 'checkMatch()' внутри 'searchDevice()' callback – Neverever

+0

@Невероятно, как вы предложили, такая же проблема. – hzq

+0

, пожалуйста, отправьте код для 'searchDevice()', также идентификатор строки должен быть уникальным 'id =" thisRow "' – Neverever

ответ

1
  • checkMatch() должен быть вызван в Ajax успеха обратного вызова
  • id должен быть уникальным в HTML документе

PHP

// use `class` instead of `id` 
    echo "<tr class=\"thisRow\"> 
       <td>$board_id</td> 
       <td>$tester_name</td> 
       <td>$board_name</td> 
       <td>$config</td> 
       <td>$log_created</td> 
       <td>$req_config</td> 
       <td class=\"match\">$j%</td> 
      </tr>"; 

Javascript

function checkMatch() 
{ 
    $("#myTable tr.thisRow").each(function() { 
     var thisRow = $(this); 
     var match = thisRow.find(".match"); 

     // note the `==` operator 
     if(match.text() == "0%") { 
      thisRow.hide(); 
      // OR thisRow.remove(); 
     } 
    }); 
} 
+0

Ahh yes. Спасибо. Вверх проголосовали за то, чтобы быть быстрым и простым ответом с объяснением. :) – hzq

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