С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/165: Рейтинг темы: голосов - 165, средняя оценка - 4.55
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154

Cannot set property 'onclick' of null

06.09.2016, 13:36. Показов 30249. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему возникает ошибка --Cannot set property 'onclick' of null на 18 строке ??


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
    <title>Demo</title>
    <meta charset="utf-8">
</head>
<body>
    
<form>
    Name:<input type="text" name="name"><br>
        <input type="button" value="Send">
 
</form>


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<script>
  
var press=document.getElementById("button");
 
press.onclick=function(f)///////////////////////////// Это 18 строка .Тут возникает ошибка.
    {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", "demo.php","true");
    xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
             var s=xmlhttp.responseText;
             // ну и далее делаете то, что вам нужно с полученным от сервера ответом
             alert(s); // например, выводите ответ в стандартном модальном окошке
            // document.getElementById('myBlock').innerHTML = s; // или помещаете ответ внутрь существующего на странице блока
           }
      
 
      xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
          
        xmlhttp.send('name=' + f.name.value);
    
    }
  }
 
 
 
</script>



HTML5
1
2
</body>
</html>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2016, 13:36
Ответы с готовыми решениями:

Uncaught TypeError: Cannot set property 'onclick' of null(anonymous function)
пробовал произвести расчет.Но консоль пишет-Benzin.html:27 Uncaught TypeError: Cannot set property 'onclick' of null(anonymous function) ...

Uncaught TypeError: Cannot set property 'onclick' of null at window.onload
На этом сайте возникает ошибка http://www.wnero.esy.es Полностью ошибка звучит так Uncaught TypeError: Cannot set property...

Cannot set property innerHTML of null
Уже мучаюсь второй день. var Engine = { scene : $(&quot;#scene&quot;), data : $(&quot;#data&quot;), app : $(&quot;#app&quot;), project :...

29
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.09.2016, 14:05
Лучший ответ Сообщение было отмечено TVPNERO как решение

Решение

ошибка возникает раньше, в строке var press=document.getElementById("button");
браузер пытается найти тег с id="button", но не находит его в уже прочитанном коде
1
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
06.09.2016, 14:52
Цитата Сообщение от TVPNERO Посмотреть сообщение
Почему возникает ошибка --Cannot set property 'onclick' of null на 18 строке ??
Потому что элемент с id="button" не найден. Раз ссылка ни на что не ссылается, то и обработчик привязать нельзя.
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
06.09.2016, 15:58  [ТС]
kalabuni,IamRain, странно ведь,не понимаю.Скрипт же прописан до </body>,тогда почему не находит id="button".
Как исправить?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.09.2016, 19:36
Цитата Сообщение от TVPNERO Посмотреть сообщение
Скрипт же прописан до </body>,тогда почему не находит id="button".
Как исправить?
браузер прочитывает и отображает/исполняет код построчно, сверху вниз

у вас в коде
<script>var press=document.getElementById("button");</script>
прописано выше, чем
<тег id="button"></тег>
Цитата Сообщение от TVPNERO Посмотреть сообщение
Как исправить?
-- либо сделать наоборот: сначала HTML-код тега, затем скриптовой блок, где используется id этого тега

-- либо оставить скриптовой блок в заголовке документа, но javascript-код внутри него "обернуть" в функцию, запускаемую по событию onload
0
06.09.2016, 19:39

Не по теме:

Цитата Сообщение от kalabuni Посмотреть сообщение
-- либо сделать наоборот: сначала HTML-код тега, затем скриптовой код
-- либо оставить как есть, но javascript-код, где упоминается button надо обернуть в функцию, запускаемую по событию onload
либо поискать по форуму, потому что эта ошибка уже 1000 раз спрашивалась и 1000 раз исправлялась

0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
06.09.2016, 19:40
kalabuni, проблема всего лишь в том, что нету элемента с таким id.
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.09.2016, 19:44
-

Не по теме:

BANO, нескромный вопрос -- как вы, будучи модератором, умудрились стать нарушителем?

0
06.09.2016, 19:59

Не по теме:

kalabuni, модератором я уже давно не являюсь, а нарушителем я стал благодаря своему мнению и своей манере речи.

0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
06.09.2016, 20:59  [ТС]
смешно аж.как же я не заметил что id не определил.впрочем хоть ошибка исправлена ,но аджакс запрос по прежнему не работает.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.09.2016, 23:30
Цитата Сообщение от TVPNERO Посмотреть сообщение
но аджакс запрос по прежнему не работает.
порекомендую вам набрать в гугле запрос "футбольный клуб Аякс, Амстердам" -- в серпе вы увидите, что по-английски этот клуб называется Аjax -- точно также, как и web-технология. которую вы уже долгое время не можете понять, но по-русски англоязычная платформа Гугль рекомендует называть его именно Аякс, но никак не Аджакс
по сути:
постарайтесь всё же понять -- ваш файл demo.php, как вы сами выше написали, изначально выводил на страницу
и какой-то заголовок для вашей страницы, и форму для написания юзером комментария, и ранее написанные комментарии
сейчас же, когда для выводов комментария вы хотите использовать аякс, вам нужен ещё один (совсем другой!) PHP-файл, который будет выводить на страницу только комментарии (и более ничего!)
так что сначала сделайте именно такой PHP-файл и проверьте его работу -- пусть он выдаёт на страницу пусть даже неотформатированные комментарии, в любом виде
и только потом приходите сюда, поможем с аяксом
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 11:42  [ТС]
kalabuni, хорошо.спасибо за разьяснение.попробую

Добавлено через 5 часов 15 минут
kalabuni, написал я пхп файл где только извлекаются коментарии и больше ничего это файл coment.php

вот код

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
$name=$_POST['name'];
 
$data=date("Y-m-d H:i:s");
 
 
@$db = new mysqli('localhost','root', '1412','demo');
  if (mysqli_connect_errno()) {
     echo "Ошибка: Не удалось установить соединение" . 
          " с базой данных. Повторите попытку позже.";
     exit;
  }
 
 
  $query ="select name from coment order by data desc"; 
           
  $result = $db->query($query);
 
  $num_results=$result->num_rows;
 
  echo "Всего коментариев ".$num_results; 
echo '<br>';
   for ($i = 0; $i < $num_results; $i++) {
     $row = $result->fetch_assoc();
       echo htmlspecialchars (stripslashes($row['name'])); echo'<br>';
     
  }
  $result->free();
  $db->close();
 
?>


А это файл demo.php где есть форма для добавления коментов и код аякс запроса(который даже после прописания
PHP
1
xmlhttp.open("POST", "coment.php","true");
все равно не работает).

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
    <title>Demo</title>
    <meta charset="utf-8">
</head>
<body>
    
<form>
    Name:<input type="text" name="name"><br>
        <input type="button" value="Send" onclick="myFunc(this.form)">
 
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script>
  
function myFunc (f)
    {
    var xmlhttp =new XMLHttpRequest();
    xmlhttp.open("POST", "coment.php","true");
    xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
             var s=xmlhttp.responseText;
             // ну и далее делаете то, что вам нужно с полученным от сервера ответом
             alert(s); // например, выводите ответ в стандартном модальном окошке
            // document.getElementById('myBlock').innerHTML = s; // или помещаете ответ внутрь существующего на странице блока
           }
      
 
      xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
          
        xmlhttp.send('name=' + f.name.value);
    
    }
  }
</script>
</body>
</html>
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 11:47  [ТС]
скрин coment.php
Миниатюры
Cannot set property 'onclick' of null  
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.09.2016, 12:31
Цитата Сообщение от TVPNERO Посмотреть сообщение
написал я пхп файл где только извлекаются коментарии и больше ничего это файл coment.php
1. вот объясните -- зачем в этом файле вам нужна переменная $name?
её значение вы извлекаете из переменной окружения $_POST в самой первой строке вашего файла, а далее она у вас нигде не используется
так нафиг вам вообще отсылать файлу coment.php методом POST со страницы пару name=значение, если эта пара вам вообще не нужна?
Для красоты?
поймите, наконец -- в программировании каждая инструкция и каждый символ что-то конкретно означают и программист должен понимать -- для чего он пишет ту или иную буквочку


2. вы работоспособность файла проверяли?
просто запустите его в браузере, прописав URL файла в адресной строке -- что он вам выдаст на страницу?
если бы переменная $name вам была бы нужна, то перед проверкой работоспособности вам надо было закомментировать первую строку и следом просто прописать $name = 'чего-то нужное';?
но так как $name у вас просто "для красоты", то перед проверкой можете ничего не менять
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 13:25  [ТС]
kalabuni, в файле coment.php переменная $name действительно не нужна,забыл стереть.

Впрочем файл все равно работоспособен и консоль разработчика не указывает на шибки.
На странице coment.php выводятся комментарии (в предыдущем посте прикрепил скрин--там 37 комментариев.)

Но в файле demo.php аякс запрос все еще не работает.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.09.2016, 14:19
Цитата Сообщение от TVPNERO Посмотреть сообщение
в файле coment.php переменная $name действительно не нужна,забыл стереть.
ну раз она не нужна, то и на странице, которая вызывает файл coment.php, совершенно не нужны ни форма, ни метод POST -- в методе open () достаточно просто указать имя файла и использовать метод GET
и вообще, вы с каким-то "придыханием" относитесь к аяксу -- считаете его чуть ли не волшебством
на самом деле всё просто -- весь вывод, который у вас сейчас отображается на странице (скан которой вы выложили), будет передан не для отображения, а в переменную в виде строки символов
пока вы это моё утверждение не поймёте и не прочувствуете, вам вовсе не стоит этим заниматься
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 14:34  [ТС]
kalabuni, попробовал использовать GET.получилось.

то что вводится в поле формы отображается в URL как например--http://localhost/proba/demo.php?name=excelent+coment/

но почему же не срабатывает алерт ?
JavaScript
1
2
3
4
5
6
7
8
9
xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
             var s=xmlhttp.responseText;
             // ну и далее делаете то, что вам нужно с полученным от сервера ответом
             alert(s); // например, выводите ответ в стандартном модальном окошке
            // document.getElementById('myBlock').innerHTML = s; // или помещаете ответ внутрь существующего на странице блока
           }

и почему используется только то что введено в поле,почему не берутся данные с coment.php?

Так сейчас выглядит код demo.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
    <title>Demo</title>
    <meta charset="utf-8">
</head>
<body>
    
<form>
    Name:<input  type="text" name="name"><br>
        <input type="submit" value="Send" onclick="myFunc(this.form)">
 
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<script>
  
function myFunc (f)
    {
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", "coment.php","true");
    xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
             var s=xmlhttp.responseText;
             // ну и далее делаете то, что вам нужно с полученным от сервера ответом
             alert(s); // например, выводите ответ в стандартном модальном окошке
            // document.getElementById('myBlock').innerHTML = s; // или помещаете ответ внутрь существующего на странице блока
           }
      
 
      
          
        xmlhttp.send('name=' + f.name.value);
    
    }
  }
 
 
 
</script>
</body>
</html>[/HTML]

Добавлено через 3 минуты
а хотя нет .даже при методе POST пишет то что введено через инпут в url.
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
07.09.2016, 14:36
Лучший ответ Сообщение было отмечено TVPNERO как решение

Решение

TVPNERO,
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<script>
  
function myFunc (f)
    {
    var xmlhttp =new XMLHttpRequest();
    xmlhttp.open("POST", "coment.php","true");
    xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
             var s=xmlhttp.responseText;
             // ну и далее делаете то, что вам нужно с полученным от сервера ответом
             alert(s); // например, выводите ответ в стандартном модальном окошке
            // document.getElementById('myBlock').innerHTML = s; // или помещаете ответ внутрь существующего на странице блока
           }
      
 
      
    
    }
//вот так
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
          
        xmlhttp.send('name=' + f.name.value);
  }
</script>
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 14:40  [ТС]
Shakalaka, Огромное спасибо.Получилось.

нужны некоторые пояснения--а для чего нужна буква f в скобках?-> function myFunc (f)
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.09.2016, 14:43
какая форма, какое поле?
вы вообще о чём?
не нужны вам -- для реализации ajax'a ни форма, ни поле в ней, вам совершенно не нужны!
в буквочке f функции при её вызове передавалась форма (как js-объект) --а теперь, вам, как выснилось, форма нафиг не нужна

вы "очень трудный" -- это я ласково, чтобы вас не обидеть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2016, 14:43
Помогаю со студенческими работами здесь

Выбивает ошибку Cannot set property of null
Вызывается функция: PER1 = 1; RABOTA(); Функция ROBOTA: function RABOTA() { for (var i=0; i&lt;11; i++) { if (a&gt;=PER1) { ...

Unable to set property 'className' of undefined or null reference script.js (6,5)
Если скрипт находиться в самом html-файле то он работает, а если я закину скрипт в отдельный файл script.js то код не работает уже....

Не работает скрипт (Uncaught TypeError: Can not set property 'onclick' of null)
Всем привет. есть скрипт на JS (простое прокрутки фоток назад и вперед. Вот мой код html &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD...

Ошибка Uncaught TypeError: Cannot set property 'innerHTML' of null
как исправить её?

Ошибка SCRIPT5007: Unable to set property 'currentDay' of undefined or null reference
Всем ПРИВЕТ. Помогите, пожалуйста, начинающему. Имеем форму, в которой составляем список подмены с указанием даты начала действия. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru