2014-04-22 44 views
-1

越来越元素我已经从我得到一些具体的文字下面的html元素,例如 “李四”堆栈在使用JavaScript

我是一个新手在JavaScript,但一直在玩的getElementById等,但我似乎无法得到这一个权利。

<div id="name"> 
    <p><span id="nameheading">name:&nbsp;</span> John Doe</p> 
</div> 

Bellow is What I have tried: 

function askInformation() 
{ 

    var nameHeading = document.getElementById("nameheading"); 
    var paragraph = document.getElementsByTagName("p").item(0).innerHTML ; 
    var name = paragraph[4]; 

    console.log(name); // prints letter (n) 
} 

我需要帮助,请

+0

给我们一个小提琴 –

+0

'第[4]'是字符串的'paragraph'第五字(' “ Paulpro

+0

nameHeading.innerHTML.charAt(4); // e'。你确定你的DOMContent被加载了吗? 'document.addEventListener('DOMContentLoaded',askInformation);' – andlrc

回答

0

如果你想在下面的跨度以下的文字:

<div id="name"> 
    <p><span id="nameheading">name:&nbsp;</span> John Doe</p> 
</div> 

您可以使用类似:

// Get a reference to the span 
var span = document.getElementById('nameheading'); 

// Get the following text 
var text = span.nextSibling.data; 

然而这高度依赖于t他的内部结构,可能最好是遍历文本节点的孩子,并收集他们所有的内容。您可能还想要修剪前导空白和尾随空白。

你也可以得到父DIV的参考和使用功能一样,收集文本孩子,而忽略子元素如下:

// Return the text of the child text nodes of an element, 
// but not descendant element text nodes 
function getChildText(element) { 
    var children = element.childNodes; 
    var text = ''; 
    for (var i=0, iLen=children.length; i<iLen; i++) { 
    if (children[i].nodeType == '3') { 
     text += children[i].data; 
    } 
    } 
    return text; 
} 

var text = getChildText(document.getElementById('name').getElementsByTagName('p')[0]); 

或更简洁的主机支持querySelector interface

var text = getChildText(document.querySelector('#name p')); 
+0

很好的解释,并做到这一点。非常感谢。我感谢你的努力..;) – user3466152

0
var paragraph = document.getElementsByTagName("p").item(0).innerHTML ; 
var name = paragraph.replace('<span id="nameheading">name:&nbsp;</span>','').trim(); // John Doe 
+0

Thanx so much ..这种方法的工作原理...我感谢您的反馈。 – user3466152