Не могу получить значения моей таблицы (getElementById не работает)

Я пытаюсь получить строку динамической таблицы после нажатия кнопки «Резерв» (или нажатия самой строки «если это имеет значение»), но «getElementById» ничего не возвращает (я хочу отобразить их в вход) вот код

HTML / PHP

<div class = "form1">
            <div>
            <label>Code creneau1</label>
            <input type = "text" id = "nop" name='nop'>
            <label>Code creneau2</label>
            <input type = "text" id = "seh" name='seh'>
            <label>Code creneau3</label>
            <input type = "text" id = "row" name='row'>
            <label>Code creneau4</label>
            <input type = "text" id = "name" name='name'>
            
            </div>
        <table class = "table table-striped" id = "res">
        <thead>
            <tr>
                <th>code salle</th>
                <th> type </th>
                <th>etage</th>
                <th>capacité</th>
                <th> action</th>
                
                
            </tr>
        </thead> 
 <tbody><?php
        while ($donnees = $requete->fetch() and $donnees2 = $requete2->fetch())
                 {
                    $donnees_ar=$_POST['date'];
                    $code_cr=$_POST['heure'];
                // echo $donnees2['id_res'].'<br>';
              
            
                 if ($donnees['code_salle']!=$donnees2['code_salle'] and $donnees2['date_res']=$_POST['date']){
 echo "<tr id='try'>

                <td >".$donnees['code_salle']."</td>
                <td >".$donnees['type_salle']."</td>
                <td >".$donnees['capacity']."</td>
                <td >".$donnees['etage']."</td>
                
                <td>
                  <a href='#0' id='he' class='cd-popup-trigger'>reserver</a>
                </td> 
            </tr>";
          }
        }; 
      }
         ?>

JS

    <script src = "js/main.js"></script>
   <script>
        var tbl= document.getElementById("res");
        for(var x=1;x<tbl.rows.length;x++ ){
            tbl.rows[x].onclick =function {
               document.getElementById('name').value=this.cells[0].innerHTML;
               document.getElementById('row').value=this.cells[1].innerHTML;
               document.getElementById('seh').value=this.cells[2].innerHTML;
               document.getElementById("nop").value=this.cells[3].innerHTML;

            }
        }
    </script>

"'getElementById' ничего не возвращает" Невозможно, указанный метод возвращает либо ссылку на элемент, либо null. Убедитесь, что код не запущен до того, как элементы существуют, и что this в вашем коде относится к правильному элементу (я сомневаюсь, что это не так).

Teemu 04.05.2022 12:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы были объявлены JavaScript внутри самого файла JS. в этом случае файл JS не будет работать для вашего HTML и не повлияет ни на что, написанное в вашем HTML. Кроме того, вы неправильно объявили свою функцию onClick. Для этого вам нужно переместить тег внутри вашего HTML. Для лучшей демонстрации:

var table= document.getElementById("res");

if (table != null) {
    for (var i = 0; i < table.rows.length; i++) {
        for (var j = 0; j < table.rows[i].cells.length; j++)
        table.rows[i].cells[j].onclick = function () {
            tableText(this);
        };
    }
}

function tableText(tableCell) {
    alert(tableCell.innerHTML);
}
<div class = "form1">
            <div>
            <label>Code creneau1</label>
            <input type = "text" id = "nop" name='nop'>
            <label>Code creneau2</label>
            <input type = "text" id = "seh" name='seh'>
            <label>Code creneau3</label>
            <input type = "text" id = "row" name='row'>
            <label>Code creneau4</label>
            <input type = "text" id = "name" name='name'>
            
            </div>
        <table class = "table table-striped" id = "res">
        <thead>
            <tr>
                <th>code salle</th>
                <th> type </th>
                <th>etage</th>
                <th>capacité</th>
                <th> action</th>
                
                
            </tr>
        </thead> 
 <tbody>
 <?php
        while ($donnees = $requete->fetch() and $donnees2 = $requete2->fetch())
                 {
                    $donnees_ar=$_POST['date'];
                    $code_cr=$_POST['heure'];
                // echo $donnees2['id_res'].'<br>';
              
            
                 if ($donnees['code_salle']!=$donnees2['code_salle'] and $donnees2['date_res']=$_POST['date']){
 echo "<tr id='try'>

                <td >".$donnees['code_salle']."</td>
                <td >".$donnees['type_salle']."</td>
                <td >".$donnees['capacity']."</td>
                <td >".$donnees['etage']."</td>
                
                <td>
                  <a href='#0' id='he' class='cd-popup-trigger'>reserver</a>
                </td> 
            </tr>";
          }
        }; 
      }
         ?>

Мой JS находится в файле HTML и является последним на странице (он не в отдельном файле), и я не нажимаю на строку, пока не будут выполнены html и php R, и все еще ничего не работает @ShayanFaghani

Oumnia Rana SEGUENI 04.05.2022 12:53

Уважаемый @OumniaRanaSEGUENI, я не знаю точной функциональности, но если вам нужно что-то изменить, вы можете использовать отредактированный выше код. Он предупредит ячейку, на которую нажали. Вы можете добавить к нему свой собственный функционал по своему желанию.

Shayan Faghani 04.05.2022 15:47

Было ли это решением для вас?

Shayan Faghani 05.05.2022 15:49

спасибо сработало! хотя теперь я застрял, пытаясь перенести его из Js в php, но ваш код сработал, так что еще раз спасибо

Oumnia Rana SEGUENI 05.05.2022 21:56

Другие вопросы по теме