Невозможно изменить значение узла в вызываемой функции onclick

Я устанавливаю аргументы моей функции, вызываемой в событии onclick с PHP, и я также передаю «это» (кнопка) в качестве аргумента, чтобы в моей функции я получал доступ к ближайшему узлу <td> и изменял его значение. Однако я не могу изменить значение узла. я получил

is not a function

ошибка каждый раз, когда я пытаюсь изменить его.

PHP-код:

echo "<tr><td>";
echo "<button onclick='updateValue($index,$byte,this)'></button>";
echo "<td>".$byte."</td>";
echo "<td>".$comment."</td>";
echo "</tr>";

И моя функция JS там:

function updateValue(index,byte,button){
     $.ajax({
       url : 'commentrefresh.php',
       type : 'GET',
       data : 'bytenumber=' + byte +"&byte_id = " +index,
       datatype : 'text',

       success : function(data){
           button.closest('tr').lastChild.val(data)
       }
   })
}

Пожалуйста, разместите весь соответствующий код, включая HTML.

Scott Marcus 04.04.2019 13:54
$(button) должно работать
Roy Bogado 04.04.2019 13:56

Нет, у меня тот же результат

Xilamax 04.04.2019 13:57

функция получает index, byte, но вы не используете их внутри функции... так что... вы используете val(data) и данные не установлены...

Roy Bogado 04.04.2019 14:03

И если вы поделитесь всем своим кодом, возможно, мы сможем вам помочь.

Roy Bogado 04.04.2019 14:04

Да, это просто пример того, что не нужно объяснять тысячу вещей.

Xilamax 04.04.2019 14:06

хорошо, сначала проверьте, почему функция использует только данные (которые не установлены)...

Roy Bogado 04.04.2019 14:07

это еще немного кода, но он не имеет ничего общего с данными, данные установлены правильно, проблема в том, что я не могу установить значение узла

Xilamax 04.04.2019 14:14
Поведение ключевого слова "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) для оценки ваших знаний,...
1
8
48
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как говорится в сообщении об ошибке, closest не является функцией на узлах DOM.

Вы пометили этот вопрос , а объекты jQuery делать имеют метод closest, но вы не обернули узел DOM в объект jQuery.

Ну, на самом деле, я пробовал множество вещей, поэтому я потерял рассудок, но я попытался обернуть узел DOm в объект jQuery, и стало еще хуже, я даже не могу получить доступ к .lastchild, но используя код, который я разместил, я могу получить доступ к последнему узлу, который я хочу, но не изменяю его

Xilamax 04.04.2019 14:19
Ответ принят как подходящий

Проверьте этот скрипач и то, как я получаю узел lastChild td.
https://jsfiddle.net/aqmtjs8k/

$(button).closest('tr').find('td:last-child')


И если вы хотите написать внутри последнего td, вы должны использовать .html(), а не .val()

.val() is only for inputs


Правильный путь:

$(button).closest('tr').find('td:last-child').html(data)

Я пробовал $(button).closest('tr').lastChild.html(data), но это тоже не сработало. Почему это работает с тем, что вы предложили, но не с тем, что я пробовал?

Xilamax 04.04.2019 14:25

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