Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не работает getelementsbyname (https://javascript.ru/forum/events/75389-ne-rabotaet-getelementsbyname.html)

ushembo 03.10.2018 18:04

не работает getelementsbyname
 
Всем привет
Подскажите почему не работает скрипт, при поиске по name,
но работает по id.
<script>
document.addEventListener('DOMContentLoaded', function(){

function charCount(text){
  return text.length;
}
function g(id){
return document.getElementById(id);
}

g('input').onkeyup=function(){
g('label').innerHTML=charCount(this.value);
}
}, false);
</script>

<textarea id='input'></textarea>
<label id='label'>0</label>


Нерабочий вариант, что с ним?
<script>
document.addEventListener('DOMContentLoaded', function(){

function charCount(text){
  return text.length;
}
function g(name){
return document.getElementsByName(name);
}

g('name').onkeyup=function(){
g('label').innerHTML=charCount(this.value);
}
}, false);
</script>

<textarea name="name" id='input'></textarea>
<label id='label'>0</label>


2) Второй вопрос, как запускать скрипт только при
определенном урле или же если в урле содержится заданный текст

Спасибо!

ushembo 03.10.2018 18:13

пардон, создал тему не в том разделе.
Перенесите пожалуйста https://javascript.ru/forum/events/

j0hnik 03.10.2018 18:21

в строке 11 нужно указать индекс элемента
g('name')[0].onkeyup=function(){

строка 12. нет у вас такого name="label"

2 вопрос, обернуть скрипт в
if(/ваш_текст/.test(document.lacation.href)){
//ваш скрипт
}

ushembo 03.10.2018 18:32

Цитата:

Сообщение от j0hnik
в строке 11 нужно указать индекс элемента

указал 0
https://codepen.io/ushembo/pen/MPKREW но все еще не работает.
А как узнать индекс нужного элемента в огромном файле?

j0hnik 03.10.2018 22:14

ushembo,
строка 12. тоже нужен индекс
Цитата:

Сообщение от ushembo
А как узнать индекс нужного элемента в огромном файле?

Дайте ему id и не парьтесь или ищите по тем параметрам которые у него уникальны или считайте какой он по счету в вашем большом файле, начиная с нуля

ushembo 04.10.2018 19:52

document.addEventListener('DOMContentLoaded', function(){
        document.querySelector('[name="NAME"]').setAttribute('id','countTitle');
        document.querySelector('[name="DESC"]').setAttribute('id','countDesc');

        var countT ='<label style="color:red;border: 1px solid #a33f19; padding: 3px; font-weight: 600; margin-left: 5px; font-size: 17px;" id="labelTitle">0</label>';
        var countD ='<label style="color:red;border: 1px solid #a33f19; padding: 3px; font-weight: 600; margin-left: 5px; font-size: 17px; position: absolute;" id="labelDesc">0</label>';

        document.getElementById('countTitle').insertAdjacentHTML("afterEnd", countT);
        document.getElementById('countDesc').insertAdjacentHTML("afterEnd", countD);

        function charCount(text){
            return text.length;
        }
        function g(id){
            return document.getElementById(id);
        }

        g('countTitle').onkeyup=function(){
        g('labelTitle').innerHTML=charCount(this.value);
        }
        g('countDesc').onkeyup=function(){
            g('labelDesc').innerHTML=charCount(this.value);
        }

    }, false);


Сделал так, все работает отлично.
Правильно сделал? Или дикий костыль?

ushembo 04.10.2018 19:54

Сейчас планирую перекрашивать label если символов больше 50 для countTitle и 150 для countDesc.
Не могли бы дать пример как это можно реализовать. Или на нужную документацию направить, хотелось бы разобраться


Часовой пояс GMT +3, время: 20:07.