Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

JavaScript. Как убрать введённый текст ?

2293  1 2 3 4 все
Феврунья прохожий20.02.21 11:09
Феврунья
20.02.21 11:09 
Здесь пример


- в левую колонку таблицы текст вводиться

- при нажатии на кнопку "schreibe" текст выводиться в правую колонку таблицы

- при нажатии на кнопку "entleere" текст должен стираться, в чём собственно у меня и проблема:


document.getElementById(id).innerHTML ='';

Вот так должно стираться из <td><input id="b1"></td>


document.getElementById('f0').value ='';

Вот так должно стираться из <td><div id='f2'></div></td>


Но ничего не происходит. Где ошибка ?




#1 
gendy Dinosaur20.02.21 12:11
gendy
NEW 20.02.21 12:11 
в ответ Феврунья 20.02.21 11:09

а где какая у вас кнопка?

откуда вы вообще стираете, просто текст в <div>, или даже лучше в <span> или value в текстовом input ?


document.getElementById(id).innerHTML ='';
Вот так должно стираться из <td><input id="b1"></td>

тогда уж наверное надо было написать document.getElementById("b1").innerHTML =''; или document.getElementById("b1").text ='';

но все равно смысла не имеет, input не имеет innenHTML

тогда уж хтмл должен выглядеть так

<td><span id="b1">удаляемый хтмл</td>


если же вы удаляете значение в инпуте, то


document.getElementById('f0').value ='';


и хтмл выглядит

<td><input id="f0" value="удаляемое значение"></td>


Фашизм будет разбит


Человека карают только те боги, в которых он верит

#2 
gendy Dinosaur20.02.21 12:17
gendy
NEW 20.02.21 12:17 
в ответ Феврунья 20.02.21 11:09

кстати совет начать изучение jquery остается в силе ,

это же прекрасно заменить ужас document.getElementById("b1") конструкцией $('#b1')

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#3 
gendy Dinosaur20.02.21 12:34
gendy
NEW 20.02.21 12:34 
в ответ Феврунья 20.02.21 11:09

я бы хтмл изменил так


<html lang="de">

<head><title>Eingabe / Ausgabe</title></head>

<body>

<link rel="stylesheet" type="text/css" href="aufgaben.css">

<button onclick="leereFenster()">entleere Fenster</button>

<br>

<table border="1">

<tr>

<td>Eingabe</td>

<td>Ausgabe</td>

</tr>

<tr>

<td><input id="b0"></td>

<td><div class='output' id='f0'></div></td>

</tr>

<tr>

<td><input id="b1"></td>

<td><div class='output' id='f1'></div></td>

</tr>

<tr>

<td><input id="b2"></td>

<td><div class='output' id='f2'></div></td>

</tr>

</table>

<br>

<button onclick="Pruefe()">schreibe</button>

<script src="aufgaben.js"></script>

</body>

</html>


а яваскриот так


function Pruefe(){

a=document.getElementById('b0').value;

b=document.getElementById('b1').value;

c=document.getElementById('b2').value;

document.getElementById('f0').innerHTML =a;

document.getElementById('f1').innerHTML =b;

document.getElementById('f2').innerHTML =c;

}

function leereFenster(){

var outputs = document.getElementsByClassName("output");

for (var i = 0; i < outputs.length; i++) {

outputs.item(i).innerHTML = '';

}

}

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#4 
gendy Dinosaur20.02.21 12:47
gendy
NEW 20.02.21 12:47 
в ответ Феврунья 20.02.21 11:09, Последний раз изменено 20.02.21 12:49 (gendy)

а теперь маленькое изменение,

и сравните яваскрипт

function Pruefe(){

$('#f0').text($('#b0').val());

$('#f1').text($('#b1').val());

$('#f2').text($('#b2').val());

}

function leereFenster(){

$('.output').text('');

}

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#5 
Феврунья прохожий20.02.21 16:01
Феврунья
NEW 20.02.21 16:01 
в ответ gendy 20.02.21 12:34, Последний раз изменено 05.03.21 20:02 (Феврунья)
No body
#6 
Феврунья прохожий20.02.21 16:07
Феврунья
NEW 20.02.21 16:07 
в ответ gendy 20.02.21 12:17, Последний раз изменено 05.03.21 20:02 (Феврунья)
No body
#7 
gendy Dinosaur20.02.21 17:25
gendy
NEW 20.02.21 17:25 
в ответ Феврунья 20.02.21 16:01

ну вообще то ещё красивее было бы все id вообще поудалять, дать класс input ам и перенести все значения в цикле а не поштучно

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#8 
gendy Dinosaur20.02.21 17:26
gendy
NEW 20.02.21 17:26 
в ответ Феврунья 20.02.21 16:07
Но для изучения iQuery нужно знать JS,

не нужно, наоборот мешать будет.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#9 
Феврунья прохожий20.02.21 18:33
Феврунья
NEW 20.02.21 18:33 
в ответ gendy 20.02.21 17:25, Последний раз изменено 20.02.21 18:35 (Феврунья)

Текст стираеться только во второй колонке.

где текст выводится после нажатия кнопки:

<td><div class='output' id='f0' value=''></div></td>


В окне ввода ничего не меняеться:

<td><input class='output' id='b0' value=''></td>


ну вообще то ещё красивее было бы все id вообще поудалять, дать класс input ам и перенести все значения в цикле а не поштучно

id нужны будут, их нельзя удалять

#10 
gendy Dinosaur20.02.21 18:40
gendy
NEW 20.02.21 18:40 
в ответ Феврунья 20.02.21 18:33
В окне ввода ничего не меняеться:

Хотите там тоже удалить?

Пишите value='' вместо innenHTML применительно к этим полям


id нужны будут, их нельзя удалять

Зачем? В данном задании они не нужны. Итерации лучше по классу делать

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#11 
Феврунья прохожий20.02.21 18:48
Феврунья
NEW 20.02.21 18:48 
в ответ gendy 20.02.21 18:40

document.getElementById('b0').value='';

точно....


Спасибо !


Зачем? В данном задании....

это ещё не всё задание.

#12 
Феврунья прохожий20.02.21 19:21
Феврунья
NEW 20.02.21 19:21 
в ответ gendy 20.02.21 18:40, Последний раз изменено 05.03.21 20:03 (Феврунья)

Пришлось такой цикл сделать:

function leereFenster()
{ let idb, idf;
for (let i = 0; i < 3; i++)
{
idb='b'+i;
idf='f'+i;
console.log(+idb,+idf);
document.getElementById(idb).value='';
document.getElementById(idf).innerHTML=''; }}

#13 
NightWatch коренной житель20.02.21 19:38
NightWatch
NEW 20.02.21 19:38 
в ответ Феврунья 20.02.21 19:21
console.log(+idb,+idf);

Есть какой-то особый, скрытый смысл в плюсах?

#14 
Феврунья прохожий20.02.21 20:11
Феврунья
NEW 20.02.21 20:11 
в ответ NightWatch 20.02.21 19:38

сначало было так: console.log('idb= ' +idb,'idf= ' +idf);

забыла стереть плюсы

#15 
gendy Dinosaur20.02.21 21:30
gendy
NEW 20.02.21 21:30 
в ответ Феврунья 20.02.21 19:21

Почему не классами? Использование id не очень хорошая идея, классов может быть много, а ид повторяться не может

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#16 
Феврунья прохожий20.02.21 21:40
Феврунья
NEW 20.02.21 21:40 
в ответ gendy 20.02.21 21:30
Почему не классами ?

В каждой строке будет отдельное задание и проверять его нужно будет отдельно, поэтому id

#17 
gendy Dinosaur20.02.21 21:54
gendy
NEW 20.02.21 21:54 
в ответ Феврунья 20.02.21 21:40

почему не индексом массива элементов класса?

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#18 
Феврунья прохожий20.02.21 22:22
Феврунья
NEW 20.02.21 22:22 
в ответ gendy 20.02.21 21:54
почему не индексом массива элементов класса?

Вот такое ?


let myArray = {
0: "345",
1: "ещё",
2: "irgendwas"};

#19 
gendy Dinosaur21.02.21 08:53
gendy
NEW 21.02.21 08:53 
в ответ Феврунья 20.02.21 22:22

Например такое. Очень удобно для масштабирования. А если у вас не три строчки а 100,чтобы для каждой ид не сочинять

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#20 
Murr патриот21.02.21 15:23
Murr
NEW 21.02.21 15:23 
в ответ Феврунья 20.02.21 11:09

Где ошибка ?

-----

В понимании того с чем работаешь.

Либо ты удаляешь заполненный блок хтмла (и потом вставляешь новый).

Либо меняешь свойства у элемента не удаляя его.


Первый шаг - определится что будешь делать.

Второй шаг - научится находить элемент с которым надо работать.


Подсказка - у тебя есть работающий пример.

#21 
Феврунья прохожий21.02.21 18:32
Феврунья
NEW 21.02.21 18:32 
в ответ Murr 21.02.21 15:23
В понимании того с чем работаешь.Либо ты удаляешь заполненный блок хтмла (и потом вставляешь новый).Либо меняешь свойства у элемента не удаляя его.

Именно это и не дошло по началу, буду заново книжки читать.


Что меня ещё ввело в ступор :

3D und A5 sind doch beide keine Zahlen.

Geprüft wird dies durch


a=parseInt(document.getElementById('b').value);
Number.isInteger(a) ? machePlus(a) :
document.getElementById('f').innerHTML ='keine Zahl';


Meldungen "falsch" und "richtig" выдаются после вычисления и сравнения с правильным ответом.

#22 
gendy Dinosaur21.02.21 18:57
gendy
NEW 21.02.21 18:57 
в ответ Феврунья 21.02.21 18:32

читайте внимательно как работает эта функция.

https://developer.mozilla.org/de/docs/Web/JavaScript/Refer...

функция "просматривает" строку в поиске цифр, пока они не закончатся

поэтому в первой строке она прочитала 5 , во второй ничего

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#23 
Феврунья прохожий21.02.21 20:08
Феврунья
NEW 21.02.21 20:08 
в ответ gendy 21.02.21 18:57

stimmt

#24 
Murr патриот22.02.21 01:09
Murr
NEW 22.02.21 01:09 
в ответ Феврунья 21.02.21 18:32

буду заново книжки читать

-----

Угу... до понимания вопроса с чем именно работаешь.

Потому как не понимая можно долго мыкаться со скриптом...


в ступор

-----

Не-не - это разбирать самостоятельно - Я не учу, Я только иногда, когда вижу где непонимание и попытку разобраться, подсказываю в какую сторону смотреть...спок

#25 
Феврунья прохожий26.02.21 13:43
Феврунья
NEW 26.02.21 13:43 
в ответ Феврунья 21.02.21 20:08, Последний раз изменено 05.03.21 20:01 (Феврунья)
No body
#26 
gendy Dinosaur26.02.21 18:35
gendy
NEW 26.02.21 18:35 
в ответ Феврунья 26.02.21 13:43

margin:auto

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#27 
Феврунья прохожий27.02.21 19:04
Феврунья
NEW 27.02.21 19:04 
в ответ gendy 26.02.21 18:35, Последний раз изменено 05.03.21 20:01 (Феврунья)
No body
#28 
Murr патриот27.02.21 19:37
Murr
NEW 27.02.21 19:37 
в ответ Феврунья 27.02.21 19:04

На jQuery тоже ничего не работает.

-----

https://basicweb.ru/jquery/jquery_effect_animate.php


Иногда на собеседованиях прогеров спрашивают - А достаточно ли толстая у тебя задница? спок

#29 
Феврунья прохожий27.02.21 20:21
Феврунья
NEW 27.02.21 20:21 
в ответ Феврунья 27.02.21 19:04, Последний раз изменено 05.03.21 20:00 (Феврунья)
No body
#30 
Murr патриот27.02.21 23:06
Murr
NEW 27.02.21 23:06 
в ответ Феврунья 27.02.21 20:21

HTML :

-----

В магазине ты получила сдачу - 3 копейки.

Два вопроса:

- каким номиналом дана сдача - 3х1 копейке, 1 + 2 копейки, 3 копейки.

- какими деньгами была произведена оплата - 1 рулем, 3 рублями, 5 рублями.


Совет - тот же - разберись с чем работаешь. Ибо гадать можно до бесконечности.

#31 
NightWatch коренной житель28.02.21 10:14
NightWatch
NEW 28.02.21 10:14 
в ответ Murr 27.02.21 19:37
https://basicweb.ru/jquery/jquery_effect_animate.php

Есть как бы официальная дока от разработчика.

https://api.jquery.com/animate/

#32 
NightWatch коренной житель28.02.21 10:31
NightWatch
NEW 28.02.21 10:31 
в ответ Феврунья 27.02.21 19:04, Последний раз изменено 28.02.21 11:13 (NightWatch)
это для flexbox, bei grid funktioniert nicht.

margin: auto размещает по центру block-элементы. Чтобы разместить по центру inline-элементы (в твоем случае button), нужно использовать свойство text-align: center контейнера.

#33 
NightWatch коренной житель28.02.21 10:36
NightWatch
NEW 28.02.21 10:36 
в ответ Феврунья 27.02.21 20:21
bergamotte прохожий28.02.21 11:01
NEW 28.02.21 11:01 
в ответ Феврунья 26.02.21 13:43, Последний раз изменено 28.02.21 11:07 (bergamotte)

- Как расположить кнопку по центру ? Вот это в CSS не работает:

justify-items:center;


=====


Есть два способа. Добавьте контейнеру с кнопкой свойство display: grid

Вот так:


#teil1 {

// тут ваши свойства

display: grid;

}


Либо вот так, с помощью флексов


#teil1 {

// тут ваши свойства

display: flex;

justify-content: center;

}


Есть на самом деле еще способы, но на флексах проще всего.


- Картинка должна передвигаться (анимация) вправо при нажатии кнопки. Пыталась сделать в CSS, не получилось, т.к. при каждом нажатии задаются новые координаты.


===


Вам нужно сохранять в переменной текущую позицию машины и при каждом клике на кнопку прибавлять к этой переменной значение желаемого шага, например 20 пикселей. Тогда машинка будет сдвигаться на 20px влево.


Вот держите песочницу с некоторыми пояснениями https://codepen.io/riedel28/pen/rNWyxPy

Можете поиграться там с кодом как хотите, попробовать что-то поменять итд.

Тут решение на обычном JS. Если надо именно на jQuery, то могу написать и на нем. Но думаю смысла в использовании jQuery особого нет, все можно сделать без использования сторонних библиотек нативными средствами.



P.S. Вижу выше уже добавили решение на jQuery :) Кстати, хорошо реализовано, чтобы машина не выезжала за границы.

#35 
Феврунья прохожий28.02.21 13:54
Феврунья
NEW 28.02.21 13:54 
в ответ bergamotte 28.02.21 11:01, Последний раз изменено 05.03.21 20:00 (Феврунья)
No body
#36 
Феврунья прохожий05.03.21 19:59
Феврунья
NEW 05.03.21 19:59 
в ответ Феврунья 28.02.21 13:54

ЗДЕСЬ


Uncaught SyntaxError: illegal character U+2074

Что не так с кавычками ? Несколько раз меняла.


Uncaught ReferenceError: Language is not defined

Почему не находится переменная ?

#37 
NightWatch коренной житель05.03.21 20:35
NightWatch
NEW 05.03.21 20:35 
в ответ Феврунья 05.03.21 19:59

aufgaben.html у тебя в кодировке UTF-16, а lang.js в UTF-8.

#38 
Феврунья прохожий06.03.21 18:03
Феврунья
NEW 06.03.21 18:03 
в ответ NightWatch 05.03.21 20:35
aufgaben.html у тебя в кодировке UTF-16, а lang.js в UTF-8

🙀ёшкин кот... действительно

#39 
Феврунья гость07.03.21 13:32
Феврунья
NEW 07.03.21 13:32 
в ответ Феврунья 06.03.21 18:03

HIER


Zwei Tabellen werden dynamisch erzeugt. Tabelle B hat keinen table tag, deswegen wird die auch von CSS-Datei nicht formatiert.

Die tags tr, td und der Inhalt der Tabelle werden trotzdem angezeigt. Es gibt auch keine Fehlermelung in der Console:


Warum ?

#40 
NightWatch коренной житель07.03.21 14:23
NightWatch
NEW 07.03.21 14:23 
в ответ Феврунья 07.03.21 13:32

Браузеры могут толерировать ошибки в коде.

Es gibt auch keine Fehlermelung in der Console:

Если это консоль Firefox, то она не показывает ошибки в html-коде.

https://developer.mozilla.org/en-US/docs/Tools/Web_Console...


Проверить html-код можешь здесь или каким-нибудь плагином к тому же Firefox'у (напр. https://addons.mozilla.org/de/firefox/addon/html-validator...)



#41 
gendy Dinosaur07.03.21 15:08
gendy
NEW 07.03.21 15:08 
в ответ Феврунья 07.03.21 13:32

"В" это не таблица в хтмл. Таблица всегда начинается с тэга table.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#42 
Феврунья гость07.03.21 19:41
Феврунья
NEW 07.03.21 19:41 
в ответ gendy 07.03.21 15:08
"В" это не таблица в хтмл

Ну да. Меня и удивило, что ошибку не выдало.

#43 
gendy Dinosaur07.03.21 20:05
gendy
NEW 07.03.21 20:05 
в ответ Феврунья 07.03.21 19:41

Как уже сказали дебаггер файрфокса такое не проверяет. Он смотрит только яваскрипт

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#44 
Феврунья гость11.03.21 18:02
Феврунья
NEW 11.03.21 18:02 
в ответ Феврунья 26.02.21 13:43

Beim klicken auf den Startbutton wird eine leere Tabelle mit Chekboxen und dazu passenden Werten aus einem Array befüllt, es werden aber nur checkboxen angezeigt. Wie setze ich value-Wert in label-Tag ein ? Mit createTextNode() und appendChild klappt es nicht, mit innerHTML auch nicht.


Hier ist das Beispiel

#45 
NightWatch коренной житель11.03.21 18:35
NightWatch
NEW 11.03.21 18:35 
в ответ Феврунья 11.03.21 18:02, Последний раз изменено 11.03.21 19:33 (NightWatch)

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/...

Beim klicken auf den Startbutton wird eine leere Tabelle mit Chekboxen und dazu passenden Werten aus einem Array befüllt,

А что будет, если Startbutton нажать, скажем, 10000 раз?

https://jsfiddle.net/8xep42Lk/

#46 
Феврунья гость11.03.21 21:05
Феврунья
NEW 11.03.21 21:05 
в ответ NightWatch 11.03.21 18:35
А что будет, если Startbutton нажать, скажем, 10000 раз?

Спасибо,буду теперь знать, как кнопку отключить!

Вообще эта функция вызывается другой функцией, не кнопкой, сюда выставила отрывок и не проверила.



Блин, а я пыталась оба аппендицита вот так прицепить:

ch=document.createElement('input');

lab=document.createElement('label');
txt=document.createTextNode(Waren);
lab.appendChild(ch,txt)
#47 
NightWatch коренной житель11.03.21 21:34
NightWatch
NEW 11.03.21 21:34 
в ответ Феврунья 11.03.21 21:05
lab.appendChild(ch,txt)

Плохо, что ты до сих пор не читаешь документацию. Твое решение было в 5 символах от правильного.

https://developer.mozilla.org/en-US/docs/Web/API/ParentNod...

#48 
Феврунья гость14.03.21 17:56
Феврунья
NEW 14.03.21 17:56 
в ответ Феврунья 11.03.21 21:05

Hier das Beispiel


Beim anklicken sollte der jeweilige Würfel einen Rahmen bekommen. Wie kriege ich ID vom angeklickten Objekt ?

#49 
gendy Dinosaur14.03.21 18:28
gendy
NEW 14.03.21 18:28 
в ответ Феврунья 14.03.21 17:56

Зачем он вам? Ставите евент на каждый кубик на одну и ту же функцию и в функции ставите бордюр на this

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#50 
Феврунья гость14.03.21 20:29
Феврунья
NEW 14.03.21 20:29 
в ответ gendy 14.03.21 18:28, Последний раз изменено 14.03.21 21:36 (Феврунья)

klappt nicht ...


И ещё не поняла, function fullHouse():


почему это работает

if( (zS[0]==zS[1]==zS[2]) || (zS[3]==zS[4]) )
{console.log("test");}


а это нет :

if( (zS[0]==zS[1]==zS[2]) && (zS[3]==zS[4]) )
{console.log("full house");}



#51 
NightWatch коренной житель14.03.21 22:08
NightWatch
NEW 14.03.21 22:08 
в ответ Феврунья 14.03.21 20:29, Последний раз изменено 14.03.21 22:44 (NightWatch)

https://jsfiddle.net/z96qo3mh/


почему это работает
if( (zS[0]==zS[1]==zS[2]) || (zS[3]==zS[4]) )
а это нет :
if( (zS[0]==zS[1]==zS[2]) && (zS[3]==zS[4]) )

Капец. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Gu...

#52 
Феврунья гость16.03.21 20:22
Феврунья
NEW 16.03.21 20:22 
в ответ Феврунья 14.03.21 20:29

Я действительно не понимаю, почему вот это не работает ?

if ( zS[0]==zS[1]==zS[2]==zS[3]==zS[4] ) { txt="Alle gleich"; }


Или вот это:

if ( ((zS[0]==zS[1]==zS[2]) && (zS[3]==zS[4])) || ((zS[0]==zS[1]) && (zS[2]==zS[3]==zS[4])) ) {txt="FullHouse";}

#53 
gendy Dinosaur16.03.21 20:36
gendy
NEW 16.03.21 20:36 
в ответ Феврунья 16.03.21 20:22

Потому что оператор == возвращает только True или false. С ним третий параметр и сравнивается. Результат в принципе смысла не имеет, разве что все параметры bool да и тогда такое делать нельзя

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#54 
NightWatch коренной житель16.03.21 21:04
NightWatch
NEW 16.03.21 21:04 
в ответ gendy 16.03.21 20:36, Последний раз изменено 16.03.21 21:04 (NightWatch)

В JS можно. А есть ли смысл или нет, зависит от...

https://262.ecma-international.org/5.1/#sec-11.9.3

https://262.ecma-international.org/5.1/#sec-9.3

#55 
gendy Dinosaur16.03.21 21:41
gendy
NEW 16.03.21 21:41 
в ответ NightWatch 16.03.21 21:04

Про типизацию я знаю, ошибку естественно не выдаст, смысла к этому выражению это не добавит

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#56 
Феврунья гость16.03.21 21:50
Феврунья
NEW 16.03.21 21:50 
в ответ gendy 16.03.21 20:36

Т.е.

- сначала zS[0]==zS[1] выдаёт результат True

- затем True сравнивается с zS[2] и получается false ?

#57 
NightWatch коренной житель16.03.21 22:22
NightWatch
NEW 16.03.21 22:22 
в ответ Феврунья 16.03.21 21:50, Последний раз изменено 16.03.21 22:38 (NightWatch)

Предположим, что в zS[0], zS[1] и zS[2] находится 2.

- сначала zS[0]==zS[1] выдаёт результат True

2 == 2 -> true

затем True сравнивается с zS[2] и получается false ?

true конвертируется в число -> 1, а потом сравнивается

1 == 2 -> false


https://jsfiddle.net/ntLuwqjd/

#58 
Феврунья гость16.03.21 22:47
Феврунья
NEW 16.03.21 22:47 
в ответ NightWatch 16.03.21 22:22

улыб Спасибо за подробный ответ !

#59 
Феврунья гость20.03.21 23:40
Феврунья
NEW 20.03.21 23:40 
в ответ Феврунья 16.03.21 22:47

var Listener7bis13=new Array(7);
Listener7bis13=['pruefePasch','pruefePasch','pruefeFullHouse','pruefeStrasseKlein','pruefeStrasseGross','pruefeKniffel','pruefeChance'];


for (let i=7;i<=13;i++){

let A=Listener7bis13[i-7];

console.log('ID '+i+ ' Listener '+A);

document.getElementById(i).addEventListener('click',A);}


Пытаюсь загрузить Listener через for-Schleife aus einem Array. Выдаётся ошибка:

Uncaught TypeError: EventTarget.addEventListener: Argument 2 is not an object.

Как присвоить значение из Array ?


#60 
bergamotte прохожий21.03.21 08:20
NEW 21.03.21 08:20 
в ответ Феврунья 20.03.21 23:40

Ваш массив listeners должен состоять из функций, а не строк, то есть у каждого имени функции нужно убрать кавычки. Разумеется эти функции должны быть созданы выше, чтобы на них можно было бы ссылаться как на переменные.

Вторым аргументом у метода addEventListener должна передаваться функция, а вы передаете на каждой итерации элемент вашего массива, то есть строку. Функция это тоже объект в JS, поэтому выводится такое вот сообщение об ошибке.

Тут подробнее https://developer.mozilla.org/en-US/docs/Web/API/EventTarg...

#61 
gendy Dinosaur21.03.21 08:46
gendy
NEW 21.03.21 08:46 
в ответ Феврунья 20.03.21 23:40

document.getElementById(i)


что должна вернуть эта функция? вы туда вообще даже не ид элемета передаёте. а непонятное число


но в принципе всё это неверно. всем квадратам нужно присвоить одинаковый класс , посадить листенер на класс и тогда ваша жуткая for шляйфа становится ненужной.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#62 
Феврунья гость21.03.21 10:39
Феврунья
NEW 21.03.21 10:39 
в ответ bergamotte 21.03.21 08:20
Ваш массив listeners должен состоять из функций, а не строк, то есть у каждого имени функции нужно убрать кавычки.

Да, кавычки здесь действительно не нужны были ! Спасибо!

Функции все готовы, теперь работает.


#63 
Феврунья гость21.03.21 10:56
Феврунья
NEW 21.03.21 10:56 
в ответ gendy 21.03.21 08:46
document.getElementById(i), что должна вернуть эта функция? вы туда вообще даже не ид элемета передаёте. а непонятное число

Всё правильно передаётся, функция передаёт Id.

всем квадратам нужно присвоить одинаковый класс ...

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


#64 
NightWatch коренной житель21.03.21 12:37
NightWatch
NEW 21.03.21 12:37 
в ответ gendy 21.03.21 08:46
посадить листенер на класс

Как?

#65 
gendy Dinosaur21.03.21 13:46
gendy
NEW 21.03.21 13:46 
в ответ Феврунья 21.03.21 10:56

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

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#66 
Феврунья гость21.03.21 14:52
Феврунья
NEW 21.03.21 14:52 
в ответ gendy 21.03.21 13:46
что должно происходить при клике по строкам

Вызывается соответствующая функция.

#67 
gendy Dinosaur21.03.21 15:02
gendy
NEW 21.03.21 15:02 
в ответ Феврунья 21.03.21 14:52, Последний раз изменено 21.03.21 15:06 (gendy)

И что делает эта функция?

Почему бы строкам не дать тогда форму линка?

< a href="#" onclick="foo">TEXT<. /a>

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#68 
Феврунья гость21.03.21 16:34
Феврунья
NEW 21.03.21 16:34 
в ответ gendy 21.03.21 15:02
И что делает эта функция? Почему бы строкам не дать тогда форму линка

У (почти) каждой строки своя функция. Линк не отключишь после выполнения функции, поэтому листенер.

#69 
gendy Dinosaur21.03.21 18:31
gendy
NEW 21.03.21 18:31 
в ответ Феврунья 21.03.21 16:34

Не понимаю, а зачем его отключать?

В функции можно сделать заглушку return false и всё

Только лучше все же сделать < td onclick="xxx" >

Думаю что убирать листенер после срабатывания не проще

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#71 
NightWatch коренной житель21.03.21 18:44
NightWatch
NEW 21.03.21 18:44 
в ответ gendy 21.03.21 18:31
Думаю что убирать листенер после срабатывания не проще

Не так уж и сложно.

element.addEventListener("click", clickHandler, { once: true });

#72 
Феврунья гость21.03.21 19:30
Феврунья
NEW 21.03.21 19:30 
в ответ gendy 21.03.21 18:31, Последний раз изменено 24.03.21 20:41 (Феврунья)
Не понимаю, а зачем его отключать?
Чтобы после внесения результата в одну строчку не кликались другие, я их выключу. После следующего броска должны включиться ещё не кликаные, для чего и сделан Array.
#73 
Феврунья гость21.03.21 19:40
Феврунья
NEW 21.03.21 19:40 
в ответ AlexNek 21.03.21 17:12

Спасибо, специально не гуглила, сама себе создаю трудности придумываю задания, чтобы учить язык.

Ту же игрушку во флэше 20 лет назад за день сделала... какой дурацкий синтаксис у явыскрипт... и голова не соображает тоже.

#74 
1 2 3 4 все