Найти необходимый блок на странице по атрибуту, а после вывести содержимое одного из его атрибутов
Задача такая:
При обновлении страницы необходимо находить элемент option с атрибутом selected и выводить содержимое его атрибута data-symbol
При этом, надо учитывать, что есть 2 списка и надо работать с элементами option лишь из списка с id="select_currency_from"
HTML:
<select id="select_currency_from" class="hidden">
<option selected="" value="btc" data-symbol="BTC" data-sub="">Bitcoin</option>
<option value="eth" data-symbol="ETH" data-sub="">Ethereum</option>
<option value="usdt" data-symbol="USDT" data-sub="ERC20">Tether (ERC20)</option>
<option value="ltc" data-symbol="LTC" data-sub="">Litecoin</option>
<option value="xmr" data-symbol="XMR" data-sub="">Monero</option>
</select>
JavaScript:
<script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
let currFrom = document.querySelectorAll('#select_currency_from option[selected]');
let currFromDone = currFrom.getAttribute('data-symbol');
console.log(currFromDone);
});
</script>
В консоль мне выводит "Uncaught TypeError: currFrom.getAttribute is not a function"
Есть вероятность возникновения ошибок из-за того, что я задаю слишком сложный селектор, к примеру, если я захочу найти элемент с id по document.getElementById и после применю на него getAttribute, то подобной ошибки не возникнет
Ответы (1 шт):
Автор решения: soledar10
→ Ссылка
Пример 1
querySelectorAll --> querySelector
let currFrom = document.querySelector('#select_currency_from option[selected]');
let currFromDone = currFrom.getAttribute('data-symbol');
console.log(currFromDone);
<select id="select_currency_from" class="hidden">
<option selected="" value="btc" data-symbol="BTC" data-sub="">Bitcoin</option>
<option value="eth" data-symbol="ETH" data-sub="">Ethereum</option>
<option value="usdt" data-symbol="USDT" data-sub="ERC20">Tether (ERC20)</option>
<option value="ltc" data-symbol="LTC" data-sub="">Litecoin</option>
<option value="xmr" data-symbol="XMR" data-sub="">Monero</option>
</select>
Пример 2
let currFrom = document.querySelectorAll('.select-currency option[selected]');
currFrom.forEach(item => {
let currFromDone = item.getAttribute('data-symbol');
console.log(currFromDone);
})
<select class="select-currency">
<option selected="" value="btc" data-symbol="BTC" data-sub="">Bitcoin</option>
<option value="eth" data-symbol="ETH" data-sub="">Ethereum</option>
<option value="usdt" data-symbol="USDT" data-sub="ERC20">Tether (ERC20)</option>
<option value="ltc" data-symbol="LTC" data-sub="">Litecoin</option>
<option value="xmr" data-symbol="XMR" data-sub="">Monero</option>
</select>
<select class="select-currency">
<option selected value="eth" data-symbol="ETH" data-sub="">Ethereum</option>
<option value="usdt" data-symbol="USDT" data-sub="ERC20">Tether (ERC20)</option>
<option value="ltc" data-symbol="LTC" data-sub="">Litecoin</option>
<option value="xmr" data-symbol="XMR" data-sub="">Monero</option>
</select>