2015-04-23 3 views
1

Мой код в значительной степени объяснить себе, что я собираюсь получить:Javascript :: TextContent/InnerText из FirstChild

<div id=player> 
    <div class="button hand">&#9658;</div> 
    <div class=time>00:00/02:25</div> 
    <div class="timeline hand"><span class="now hand"></span></div> 
</div> 

<script> 

var myPlayer=document.getElementById('player').firstChild; 
var playerStatus=(myPlayer.innerText||myPlayer.textContent); 

console.log(playerStatus); 

</script> 

Я ожидаю, чтобы получить значение Ascii &#9658; на консоли.

Маленький твик нужен здесь

ответ

2

У вас есть как id, так и class, поэтому используйте querySelector().

var myPlayer=document.querySelector('#player > .button.hand'); 

Это также имеет преимущество работы в IE8.


Кроме того, ярлык для innerText/textContent, чтобы проверить для этого в верхней части сценария, и сохранить соответствующий ключ в строке.

var text = ("textContent" in document) ? "textContent" : "innerText"; 

Затем используйте квадратные скобки с переменной text.

var myPlayer=document.querySelector('#player > .button.hand'); 
var playerStatus=(myPlayer[text]); 

Тогда вы можете сократить это следующим образом:

var playerStatus=document.querySelector('#player > .button.hand')[text]; 
2

Попробуйте это:

var myPlayer=document.getElementById('player').firstElementChild; 

Проблема заключается в том, что первый ребенок #player сам является текстовым узлом. То, что вы ищете, это первый элемент ребенок #player.

Недостаточное примечание: firstElementChild не поддерживается IE8-.

+0

OMG я люблю тебя: D! 10x !!! –

+0

@ Hezi-Gangina Эй, добро пожаловать! ^^ – MaxArt

Смежные вопросы