XML 数据不会进入子元素
XML data will not go into child element
我刚刚开始了解 XMLHttpRequest 并从 javascript 中的 XML 文件获取数据,所以我一直在摆弄这段代码(来自 W3C site, on displaying XML data),最后是这样的:
<style>
div[ui="note"] {
border: 1px solid #999;
color: red;
}
</style>
</head>
<div ui="panel-area">
<div ui="panel">
<div ui="note">
<strong>Content should be here</strong>
</div>
</div>
</div>
<script>
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","xml.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
var x = xmlDoc.getElementsByTagName("CD");
for (i=0;i<x.length;i++)
{
document.querySelector('div[ui="panel"]').innerHTML += "<div ui='note'><strong>Content should be here</strong>";
document.querySelector('div[ui="panel"]').innerHTML += x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
}
document.querySelector('div[ui="panel"]').innerHTML +="</div>";
</script>
</body>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD>
<ARTIST>Bob Dylan</ARTIST>
</CD>
<CD>
<ARTIST>Bonnie Tyler</ARTIST>
</CD>
<!-- Lots more names -->
</CATALOG>
这将创建一个 <div ui="note">
,艺术家名称 在 下面,但问题是,我无法将其放入 <div ui="note">
:
This is the image of the result
有没有什么方法可以将内容添加到笔记中 div(请不要表格)- 不依赖于特殊的单一浏览器功能,并且可以在移动 safari 上运行?
问题是您正在使用 .innerHTML += ...
将 html 的不完整部分连接到您的 'div[ui="panel"]'
元素。
在第一行添加:
"<div ui='note'><strong>Content should be here</strong>"
但浏览器不知道几行之后您将添加结束 "</div>"
标记,因此它不知道您要将艺术家姓名字符串放在 div.
(此外,即使这样做有效,您的循环也会创建多个新的开始 <div>
标记,但仅在循环后添加一个结束 </div>
标记。)
尝试创建完整的 html,然后一步将其添加到面板 div:
var newHTML = "";
for (i=0;i<x.length;i++) {
newHTML += "<div ui='note'><strong>Content should be here</strong>"
+ x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue
+ "</div>";
}
document.querySelector('div[ui="panel"]').innerHTML += newHTML;
如果您希望每个艺术家的名字出现在您有硬编码 "Content should be here" 字符串的地方,那么试试这个:
var newHTML = "";
for (i=0;i<x.length;i++) {
newHTML += "<div ui='note'><strong>"
+ x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue
+ "</strong></div>";
}
document.querySelector('div[ui="panel"]').innerHTML += newHTML;
请注意,这与您正在执行 ajax 请求或您的源数据采用 xml 格式无关。这只是您将这些值放在一起的方式,因为它们不是很有效 html.
我刚刚开始了解 XMLHttpRequest 并从 javascript 中的 XML 文件获取数据,所以我一直在摆弄这段代码(来自 W3C site, on displaying XML data),最后是这样的:
<style>
div[ui="note"] {
border: 1px solid #999;
color: red;
}
</style>
</head>
<div ui="panel-area">
<div ui="panel">
<div ui="note">
<strong>Content should be here</strong>
</div>
</div>
</div>
<script>
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","xml.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
var x = xmlDoc.getElementsByTagName("CD");
for (i=0;i<x.length;i++)
{
document.querySelector('div[ui="panel"]').innerHTML += "<div ui='note'><strong>Content should be here</strong>";
document.querySelector('div[ui="panel"]').innerHTML += x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
}
document.querySelector('div[ui="panel"]').innerHTML +="</div>";
</script>
</body>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD>
<ARTIST>Bob Dylan</ARTIST>
</CD>
<CD>
<ARTIST>Bonnie Tyler</ARTIST>
</CD>
<!-- Lots more names -->
</CATALOG>
这将创建一个 <div ui="note">
,艺术家名称 在 下面,但问题是,我无法将其放入 <div ui="note">
:
This is the image of the result
有没有什么方法可以将内容添加到笔记中 div(请不要表格)- 不依赖于特殊的单一浏览器功能,并且可以在移动 safari 上运行?
问题是您正在使用 .innerHTML += ...
将 html 的不完整部分连接到您的 'div[ui="panel"]'
元素。
在第一行添加:
"<div ui='note'><strong>Content should be here</strong>"
但浏览器不知道几行之后您将添加结束 "</div>"
标记,因此它不知道您要将艺术家姓名字符串放在 div.
(此外,即使这样做有效,您的循环也会创建多个新的开始 <div>
标记,但仅在循环后添加一个结束 </div>
标记。)
尝试创建完整的 html,然后一步将其添加到面板 div:
var newHTML = "";
for (i=0;i<x.length;i++) {
newHTML += "<div ui='note'><strong>Content should be here</strong>"
+ x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue
+ "</div>";
}
document.querySelector('div[ui="panel"]').innerHTML += newHTML;
如果您希望每个艺术家的名字出现在您有硬编码 "Content should be here" 字符串的地方,那么试试这个:
var newHTML = "";
for (i=0;i<x.length;i++) {
newHTML += "<div ui='note'><strong>"
+ x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue
+ "</strong></div>";
}
document.querySelector('div[ui="panel"]').innerHTML += newHTML;
请注意,这与您正在执行 ajax 请求或您的源数据采用 xml 格式无关。这只是您将这些值放在一起的方式,因为它们不是很有效 html.