简体   繁体   中英

Javascript:: textContent/innerText of firstChild

My code is pretty much explain itself of what I'm about to get :

<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>

I'm expect to get the ascii value &#9658; on console.

Small tweak needed here

Try this:

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

The problem is that the first child of #player is a text node itself. What you're looking for is the first element child of #player .

A minor note: firstElementChild isn't supported by IE8-.

You have both id and class available, so use querySelector() .

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

This also has the benefit of working in IE8.


Also, a shortcut for innerText/textContent is to check for it at the top of your script, and store the appropriate key in a string.

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

Then use square brackets with the text variable.

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

Then you can actually shorten it like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM