Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154

Cannot set property 'onclick' of null

06.09.2016, 13:36. Показов 30537. Ответов 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
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 14:53  [ТС]
Студворк — интернет-сервис помощи студентам
kalabuni, ну а как же записывать коментарии в БД без формы?

Для вывода,конечно не нужно.но в скомпоновке надо.

Добавлено через 5 минут
Shakalaka, И еще.

вывод в модальное окно срабатывает ,а если использовать document.getElementById("myBlock").inner HTML=s;
то вывод в блок id="myBlock" не происходит,почему?

HTML5
1
2
3
4
5
6
7
<form>
    Name:<input  type="text" name="name"><br>
        <input type="submit" value="Send" onclick="myFunc(this.form)">
 
</form> 
 
<div id="myBlock"></div>
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>
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.09.2016, 14:54
запись комментариев -- это задача номер один
вывод комментарив с помощью аякса -- это задача номер два

назначение функции на событие onclick кнопки (то, с чего вы начали эту тему) -- это задача номер три
аякс -- это только задача номер два
не надо объединять все три задачи в одну и всю эту общую задачу именовать аяксом
научитесь отделять котлеты от мух
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 15:03  [ТС]
Shakalaka, Я ошибся.метод document.getElementById("myBlock").inner HTML=s; работает

при клике мыши на кнопке формы появляется на доли секунды и потом тут же исчезает.Как сделать чтоб после нажатия все оставалось на месте?

Добавлено через 57 секунд
kalabuni, -а для чего нужна буква f в скобках?-> function myFunc (f)
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.09.2016, 15:10
Цитата Сообщение от TVPNERO Посмотреть сообщение
при клике мыши на кнопке формы появляется на доли секунды и потом тут же исчезает.Как сделать чтоб после нажатия все оставалось на месте?
перечитайте вами написанное
что и где появляется, и что и где исчезает?
вот как бы нам догадаться -- что творится в вашей голове, когда вы здесь свои вопросы задаёте?
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
07.09.2016, 15:14
при клике мыши на кнопке формы появляется на доли секунды и потом тут же исчезает.Как сделать чтоб после нажатия все оставалось на месте?
Вы нажимаете на кнопку сабмит тем самым вызываете вашу функцию myFunc а потом происходит действие по умолчанию - отправка формы, страница обновляется, всё исчезает. Я не понял зачем вам при этом форма, ибо обработчик клика можно повесить на любой элемент, например див
1
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 15:20  [ТС]
Shakalaka, а спасибо,у меня ж кнопка сабмит--для отправки коментов в БД.

Добавлено через 4 минуты
Shakalaka, а как лучше прописать? чтоб и коменты добавлялись не снимая тип сабмит и аякс запрос оставить для вывода коментов?

сейчас это выглядит вот так..кусок кода

HTML5
1
2
3
4
5
6
7
8
    
<form>
    Name:<input  type="text" name="name"><br>
        <input type="submit" value="Send" onclick="myFunc(this.form)">
 
</form> 
 
<div id="myBlock" style="display:inline-block;width:400px;border:green solid"></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
<script>
  
function myFunc (f)
    {
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("POST", "coment.php","true");
    xmlhttp.onreadystatechange=function()
        {
         if (xmlhttp.readyState == 4)
             {
////////////////////////////////////////////////////////////////// и так далее
[/HTML]
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
07.09.2016, 15:45
TVPNERO, честно говоря, не очень понял что у вас происходит. Вы хотите одним кликом и добавлять комментарий и выводить его на странице? При этом у вас обработчик добавления в одном файле, а обработчик получения комментариев в другом? Не проще ли оба обработчика поместить в одном файле и дергать его аяксом?
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 16:47  [ТС]
Shakalaka, чтоб более понятно было кину целиком файл demo.php,в котором есть форма для добавления комментариев,в этом файле пхп код соединяется с БД и передает комментарии в БД.

А файл соment.php,имеет только одно предназначение --он извлекает из БД комментарии.И вот тут то аякс запрос из файла demo.php и выводит комментарии из файла соment.phр под своей хтмл формой.

код demo.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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> 
 
<div id="myBlock" style="display:inline-block;width:400px;border:green solid"></div>
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
<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>
HTML5
1
2
</body>
</html>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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;
  }
 
 if(!empty($name)){
 $query = "INSERT INTO `coment`(`name`,`data`) VALUES ('$name','$data')";
 
  $result = $db->query($query);}
   
?>
=======================

код файла 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
<title>coment.php</title>
 
<?php
// извлекаем коментарии из БД и в этом же файле их выводим
//потом эти коментарии будут запрошены аяксом
@$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(скрин прикрепляю)-- так как тип кнопки с type="button", то комvентарии из coment.php после нажатия на кнопке формы выводятся аякс запросом,но если захочу добавить комментарий в БД то придется менять тип кнопки на самбит и тогда аякс запрос не будет работать.

То есть мне нужно чтоб коменты добавлялись пхп кодом ,а извлекались-- из файла coment.php(который хранит уже комментарии из БД) аякс запрсом.

также прикрепляю файл--так выглядит файл coment.php(хранящий коменты БД).
Миниатюры
Cannot set property 'onclick' of null   Cannot set property 'onclick' of null  
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
07.09.2016, 17:13
TVPNERO, вы слишком усложняете себе жизнь. При сабмите формы страница перезагрузится и соответственно все результаты работы вашего аякс запроса исчезнут. Вы можете добавлять комментарий аякс запросом без перезагрузки страницы и получать комментарии аякс запросом, можете объединить оба обработчика получение/добавление в один и обращаться к нему аяксом, можете поместить пхп код добавления/получения на одной странице и вообще обойтись без аякса, тогда имеет смысл использовать форму. Вам всего лишь нужно выбрать наиболее рациональный/подходящий вам вариант.
0
 Аватар для TVPNERO
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,154
07.09.2016, 18:24  [ТС]
Shakalaka,
Цитата Сообщение от Shakalaka Посмотреть сообщение
Вы можете добавлять комментарий аякс запросом без перезагрузки страницы
Аякс может закинуть комментарии прямо в БД.А как это сделать?

Можете написать аякс код для добавления комментария в БД?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2016, 18:24

Выбивает ошибку 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
Всем ПРИВЕТ. Помогите, пожалуйста, начинающему. Имеем форму, в которой составляем список подмены с указанием даты начала действия. ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

Новые блоги и статьи
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru