如何使用javascript和dom技术
如何使用javascript和dom技术 要使用div childs获取p和span的值?? 这是密码如何使用javascript和dom技术,javascript,dom,Javascript,Dom,如何使用javascript和dom技术 要使用div childs获取p和span的值?? 这是密码 <html> <head> <script> function afficherTexts(){ var div = document.getElementById("test"); } </script> </head> <body> <div id="test"> <p>2002<
<html>
<head>
<script>
function afficherTexts(){
var div = document.getElementById("test");
}
</script>
</head>
<body>
<div id="test">
<p>2002</p>
<span>Mon texte</span>
</div>
<input type=submit value="afficher p" onClick="afficherTexts()"/>
</body>
</html>
函数afficherTexts(){
var div=document.getElementById(“测试”);
}
2002年
蒙特克斯
使用
或
如果在p标记中添加id,则可以轻松完成此操作 修改HTML代码:
<div id="test">
<p id='para'>2002</p>
<span>Mon texte</span>
</div>
<input type=submit value="afficher p" onClick="afficherTexts()"/>
使用节点而不是innerHTML。使用节点可以区分文本和元素
// reference to first div
var div = document.getElementsByTagName('div')[0];
// reference to first p in first div
var p = div.getElementsByTagName('p')[0];
// get p text using nodes
var pText = p.childNodes[0].nodeValue;
// reference to first span in first div
var span = div.getElementsByTagName('span')[0];
// get span text
var spanText = span.childNodes[0].nodeValue;
使用节点和innerHTML的区别在于,如果您愿意,您可以只获取文本。使用此方法,您可以绕过元素中包含的任何HTML并获取原始文本
HTML
<p>
2002
<span>2003</span>
2004
</p>
2002
2003
2004
Javascript
var pText = "";
for(var i=0,l=p.childNodes.length;i<l;i++) {
var node = p.childNodes[i];
// if node is a text node
if(node.nodeType===3)
{ pText += node.nodeValue.trim(); }
}
// 20022004
window.alert(pText)
var pText=”“;
对于(var i=0,l=p.childNodes.length;i此代码将获取div中每个段落和跨度的值,分别存储:
var testDiv = document.getElementById('test');
var output = {};console.log(testDiv.childNodes);
for (var idx in testDiv.childNodes) {
var child = testDiv.childNodes[idx];
switch (child.nodeName) {
case 'P':
// fallthrough
case 'SPAN':
if (output[child.nodeName]) {
output[child.nodeName].push(child.innerHTML);
} else {
output[child.nodeName] = [child.innerHTML];
}
break;
default:
// empty
break;
}
}
console.log(output);
输出:
v Object {P: Array[1], SPAN: Array[1]}
v P: Array[1]
0: "2002"
length: 1
> __proto__: Array[0]
v SPAN: Array[1]
0: "Mon texte"
length: 1
> __proto__: Array[0]
> __proto__: Object
您考虑过使用jQuery之类的库吗?那么您可以只使用例如$('div#test p').html()
我想使用getElementById和childs(firstChild…)但是span
和p
没有属性id
。您只能使用firstChild
方法获取第一个元素。另一种方法是使用childNodes
方法……除了p
(和span
)元素没有值
属性…我想您应该使用.innerHTML
var pText = "";
for(var i=0,l=p.childNodes.length;i<l;i++) {
var node = p.childNodes[i];
// if node is a text node
if(node.nodeType===3)
{ pText += node.nodeValue.trim(); }
}
// 20022004
window.alert(pText)
var testDiv = document.getElementById('test');
var output = {};console.log(testDiv.childNodes);
for (var idx in testDiv.childNodes) {
var child = testDiv.childNodes[idx];
switch (child.nodeName) {
case 'P':
// fallthrough
case 'SPAN':
if (output[child.nodeName]) {
output[child.nodeName].push(child.innerHTML);
} else {
output[child.nodeName] = [child.innerHTML];
}
break;
default:
// empty
break;
}
}
console.log(output);
v Object {P: Array[1], SPAN: Array[1]}
v P: Array[1]
0: "2002"
length: 1
> __proto__: Array[0]
v SPAN: Array[1]
0: "Mon texte"
length: 1
> __proto__: Array[0]
> __proto__: Object