Замена querySelector на getElementById

192
02 ноября 2021, 22:50

Пытаюсь поменять querySelector на getElementById в строке

Coins_Names[i].getElementById("trading__market-table-price").innerHTML

Но получаю ошибку Сoins_Names[i].getElementById is not a function Как быть в такой ситуации? Html код:

 <div class="trading__market-table-row" id="CoinProd_a" name="CoinID_a" onclick='ChangeCoinProdBuySell("CoinID_a");'>
                                        <div class="trading__market-table-wrap">
                                            <div class="trading__market-table-circle trading__market-table-circle--green" name="Point_a" onclick='ChangeColorGreenPoint("Point_a");'></div>
                                            <!-- green -->
                                            <div class="trading__market-table-coin">a</div>
                                        </div>
                                        <div class="trading__market-table-price"></div>
                                        <div class="trading__market-table-volume" style=" "></div>
                                        <div class="trading__market-table-change" style=" "></div>
                                    </div>

Js код:

function Exchange_Rates_Fun(result) {
                        if (result.Exchange_Rates != null) {
                            var Coins_Names = document.getElementsByClassName('trading__market-table-row');
                            for (var i = 0; i < Coins_Names.length; i++) {
                                var name = (Coins_Names[i].getAttribute("id")).split('_')[1];
                                Coins_Names[i].querySelector('.trading__market-table-price').innerHTML = result.Exchange_Rates[CoinVal][name];
                                Coins_Names[i].querySelector('.trading__market-table-volume').innerHTML = result.Volume_Rates[CoinVal][name] / 100000000;
                                if (result.History_Rates[CoinVal][name] != 0) {
                                    var change_curs = (result.Exchange_Rates[CoinVal][name] - result.History_Rates[CoinVal][name]) / result.History_Rates[CoinVal][name] * 100;
                                    Coins_Names[i].querySelector('.trading__market-table-change').innerHTML = change_curs.toFixed(1) + '%';
                                    Coins_Names[i].querySelector('.trading__market-table-change').classList.remove('trading__market-table-change--red');
                                    if (change_curs < 0) {
                                        Coins_Names[i].querySelector('.trading__market-table-change').classList.add('trading__market-table-change--red');
                                    }
                                } else {
                                    Coins_Names[i].querySelector('.trading__market-table-change').innerHTML = '0.0%';
                                }
                            }
                        }
                    }
Answer 1

Метод getElementById можно вызвать только для объекта document. Он осуществляет поиск по id по всему документу.

Самый универсальный метод поиска – это elem.querySelectorAll(css), он возвращает все элементы внутри elem, удовлетворяющие данному CSS-селектору.

Метод elem.querySelector(css) возвращает первый элемент, соответствующий данному CSS-селектору.

Иначе говоря, результат такой же, как при вызове elem.querySelectorAll(css)[0], но он сначала найдёт все элементы, а потом возьмёт первый, в то время как elem.querySelector найдёт только первый и остановится. Это быстрее, кроме того, его короче писать.

https://learn.javascript.ru/searching-elements-dom

READ ALSO
Добавление/удаление класса к элементу

Добавление/удаление класса к элементу

Есть несколько строк в таблице с такой структурой:

105
setTimeout() и стэк

setTimeout() и стэк

разбираюсь с debouncing и throttling, основу работы setTimeout() и setInterval() понимаю, но код ниже меня запутывает, так при выполнении без пауз в Nodejs и хроме выдает...

151
Как собрать анимацию из кусков с JS?

Как собрать анимацию из кусков с JS?

Давно зрела мысля сделать небольшую браузерную игру, вот пытаюсь залезть в тему gamedevИзначально была идея сделать анимацию построенную на спрайтах:

118
Звук без учета вкладки

Звук без учета вкладки

День добрыйКаким образом можно проиграть звук в браузере с той вкладки, на которой пользователь не находится в данный момент ? На деле выходит,...

147