javascript to change innerHTML
javascript to change innerHTML
我想使用另一个div的nextSibling来更改div"act"的内容。
但结果是-未定义。
function inner(){
var abc = document.getElementById("start").nextSibling;
document.getElementById("act").innerHTML = abc.innerHTML;
}
<img id="btnRight" src="img/btnRight.png" onclick="inner()">
<div id="act"><img src="img/home01.jpg"></div>
<div id="store">
<div id="start">
<img src="img/img01.jpg">
</div>
<div>
<img src="img/img02.jpg"> //wanted to place into "act"
</div>
<div id="end">
<img src="img/img03.jpg">
</div>
</div>
使用nextElementSibling
,nextSibling
可以是文本节点
function inner(){
var abc = document.getElementById("start").nextElementSibling;
document.getElementById("act").innerHTML = abc.innerHTML;
}
小提琴
如果目标浏览器不支持nextElementSibling
,则可以遍历同级节点并找到第一个元素节点。
function nextElementSibling(element) {
while (element.nextSibling){
element = element.nextSibling;
if (element.nodeType == Node.ELEMENT_NODE){
return element;
}
}
return undefined;
}
FIDDLE
遍历节点时,必须确保跳过空白。
function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType != 1);
return elem;
}
function inner(){
var abc = next(document.getElementById("start"));
document.getElementById("act").innerHTML = abc.innerHTML;
}
您可以在上看到一个工作示例http://jsfiddle.net/CkCR3/.
导致这种行为的原因是id为"start"的div和下面的div之间存在空白。因此,nextSibling将是文本内容。你需要做两次下一次扫描:
var abc = document.getElementById("start").nextSibling.nextSibling;
另一种选择是删除两个div之间的空白字符。
请根据以下内容更改您的代码行;因为每个下一个元素都要检查是否存在,所以获取内部html。
函数inner(){
var abc = document.getElementById("start");
do {
abc = abc.nextSibling;
} while (abc && abc.nodeType != 1);
document.getElementById("act").innerHTML = abc.innerHTML;
return false;
}
我制作了一个jsfiddle来演示一种更简单的方法。您会注意到actdiv是红色的,startdiv是蓝色的。当您单击按钮时,innerHTML将发生更改。此外,您可能会看到未定义的原因是DOM没有加载,因此它不知道div的存在。下次应该使用window.onload = inner();
使函数在加载DOM后运行。
这是jsfiddle:http://jsfiddle.net/yY9Ag/16/
有双向
首先修复代码
nextSibling.nextSibling.innerHTML
或修复html:删除所有字符
<img id="btnRight" src="img/btnRight.png" onclick="inner()"><div id="act"><img src="img/home01.jpg"></div><div id="store"><div id="start"><img src="img/img01.jpg"></div><div><img src="img/img02.jpg"> //wanted to place into "act"</div><div id="end"><img src="img/img03.jpg"></div></div>
因为div标记的下一个同级是空的textNode(它看不到)
相关文章:
- 转义符不能与innerHTML一起使用
- 使用元素的值与innerHTML
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- Selenium WebDriver and JavaScript change
- Javascript form innerHTML
- JavaScript上的表单和innerHTML问题
- Bootstrap 3 Datepicker v4:dp.show和dp.change事件在Datepicker内联时不
- 如何使用innerHtml正确插入html
- 带有.change()的AJAX不起作用
- 当我更改innerHtml时,引导选项卡事件不再工作
- 一个ajax循环有两个输出错误innerHTML
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- Advantages to DOMParser vs template & innerHTML
- innerHTML的子字符串可以在初始调用时提取吗
- 如何逃离<脚本>jquery html()中的标记.我使用了innerHTML和outerHTML来解决这个
- Javascript innerHTML超出范围的问题
- javascript to change innerHTML
- change innerhtml javascript
- Change TD innerHTML
- Change innerHTML of a php DOMElement