我有这个div我用javascript添加更多div。
但是,每当我使用javascript将div添加到div时,它会刷新,例如,这些div中的youtube视频将会停止。
我可以将这些div放入div但不重新加载吗?
答案 0 :(得分:3)
刷新?您是否使用“提交”类型的按钮(在表单中,感谢RobG)或添加DIV的链接?如果是这样,您可以在要调用的函数中返回false以附加DIV。
<button onclick="return foo()">The Button</button>
function foo(){
/*all the work*/
return false; //No matter what, return false so you don't get a page reload.
}
编辑:看起来你正在使用链接。我们有几种方法可以解决这个问题:
您可以将href更改为“#”(在HTML中称为锚)。
<a href="#">Foo</a>
单击它时,不会将您发送到其他页面,但有两点需要注意:
更多信息:W3C Page on Links (and anchors)
在Javascript函数中返回false将阻止链接转到其原始目标。这也适用于表格。
您可以在<a>
标记的声明中指定操作,例如
<a href="foo.html" onclick="foo(); return false;">Foo</a>
<!---The above "onclick" could also just be a function that always returns false-->
此方法维护我们希望为非JavaScript用户保留的任何链接,并且不会移动页面的位置。但是,这种方法也存在一些缺陷:
一些Javascript术语术语:
有许多方法可以使用Javascript将事件绑定到HTML元素,但为了简单起见,我会将其简要说明。
<a href="foo.html" id="foo">Foo</a>
在这里,我们通过以下方式更改了标签:
让我们使用JavaScript将事件处理程序绑定到我们的链接:
function foo(){
/* stuff we want to do to our div */
return false; /* prevent page refresh */
}
function addEventToLink(){
/* Set up a variable that we can use JavaScript to change attributes and event listeners*/
var theLink = document.getElementById('foo');
/* Set up our link to call the method 'foo', but ONLY when it is clicked on.
* element.onclick changes the "onclick" attribute of the element */
theLink.onclick = foo;
}
addEventToLink(); //finally, call the method so our event listener is added to our link
请注意使用element.onclick
,您只能为每个元素设置一个事件处理程序。这基于DOM Level 0 Events规范。如果要为每个元素添加多个事件处理程序,请在Wikipedia.
答案 1 :(得分:0)
你必须做的事情如下:
myDiv.innerHTML += "<div>div content</div>";
完全重建myDiv
中的所有内容。相反,操纵DOM以插入新的div:
var newDiv = document.createElement("div");
newDiv.innerHTML = "<span>Some HTML</span>";
myDiv.appendChild(newDiv);