Задать вопрос
partyzanx
@partyzanx

Как игнорировать чтение содержимого li, а читать только li?

<iframe id="trn" style="width:0; height:0; border:0; border:none">
    Ваш браузер не поддерживает плавающие фреймы!
 </iframe>

<div class="liju">
<ul>
<li><em>两</em> 个 学生 <span class="pinyin"><em>liǎng</em> ge xuéshēng</span><span class="trans">Двое студентов</span></li>
<li><em>两</em> 个 小时 <span class="expl">Обратите внимание! Это количество, а не указание сколько сейчас времени</span><span class="pinyin"><em>liǎng</em> ge xiǎoshí</span><span class="trans">Два часа</span></li> 
</ul>
</div>


Есть такой рабочий скрипт

<script> 

;(function(){
 var player = new Audio();
 var buttons = document.querySelectorAll('div.liju ul li');
 buttons.forEach(btn => btn.addEventListener('click', play));

function assignLocation(urlParams) { 
 const siteUrl = "https://translate.google.ps/translate_tts";
 function serializeParams(params) {
 return Object.keys(urlParams).reduce((acc, cur) => {
 return acc += `&${ cur }=${encodeURIComponent(urlParams[cur])}`;
 }, '').replace(/^&/, '');
 } 
 document.getElementById('trn').src = `${siteUrl}?${serializeParams(urlParams)}`;
}
let url = {
 //tk:'505935%7C7C631501',
 ie:'UTF-8',
 tl:'zh',
 total:50,
 idx:0,
 textlen:80,
 client:'tw-ob',
 q: '二' 
};

 function play(evt) {
 url.q = evt.target.textContent;
 url.textlen = evt.target.textContent.length;
 url.total = evt.target.textContent.length;
 console.log (url)
 assignLocation(url);
 }
})();
 </script>


Как сделать, чтобы он читал только содержимое li, на первом уровне, игнорируя другие spanы внутри себя?
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Оценить 7 комментариев
Решения вопроса 1
Stalker_RED
@Stalker_RED
function omfg(elem) {
  return Array.prototype.reduce.call(
    elem.childNodes,
    (a,n) => a + (
      n.tagName === 'EM' ? n.textContent :
      n.nodeType === Node.TEXT_NODE ? n.textContent : ''
    ),
    '')
    .trim()
}
https://jsfiddle.net/m0w71q3L/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы