[英]appendChild works outside the function but not inside
我的代碼部分有問題。我嘗試使用JavaScript創建“ DIV”和“ P”標簽,但只有當我將代碼放在函數之外(函數稱為“ fo”)時,它才起作用。單擊該按鈕,將出現一個對話框,如果單擊“取消”,則appendChild方法應將“ div”和“ p”標記放在“ body”中。
我應該補充一點,可以在屏幕上短暫看到p標簽中的文本,然后突然消失。我的瀏覽器是Google Chrome。
<html>
<body>
</body>
<script>
function give(){
form = document.createElement("FORM");
input = document.createElement("INPUT");
input.setAttribute("type", "submit");
input.setAttribute("value", "button");
form.setAttribute("id", "abc");
form.setAttribute("onsubmit", "fo()");
textarea = document.createElement("TEXTAREA");
textarea.setAttribute("id", "txt");
form.appendChild(input);
form.appendChild(textarea);
document.body.appendChild(form);
document.getElementById("abc").method = "post";
}
give();
function fo(){
a = document.getElementById("txt").value;
cfm = confirm("Are you sure you want changes");
if (cfm == false ) {
div = document.createElement("DIV");
p = document.createElement("P");
ptxt = document.createTextNode("test");
p.setAttribute("id", "centr");
p.appendChild(ptxt);
div.appendChild(p);
document.body.appendChild(div);
}
}
/*When this part of code is outside function fo() , appendChild works correctly
div = document.createElement("DIV");
p = document.createElement("P");
ptxt = document.createTextNode("Outside the function it works");
p.setAttribute("id", "centr");
p.appendChild(ptxt);
div.appendChild(p);
document.body.appendChild(div);
*/
</script>
</html>
你面對提交表單的默認行為,這是瀏覽到另一個頁面,在規定action
的屬性,或者重新加載當前頁面action
沒有規定。
您需要對代碼進行以下更改以解決此問題:
form.setAttribute("onsubmit", "fo(event)");
fo()
函數簽名更改為fo(event)
if (cfm == false)
條件主體結尾處調用event.preventDefault()
因此,您的代碼如下所示:
<html>
<body>
</body>
<script>
function give(){
form = document.createElement("FORM");
input = document.createElement("INPUT");
input.setAttribute("type", "submit");
input.setAttribute("value", "button");
form.setAttribute("id", "abc");
form.setAttribute("onsubmit", "fo(event)");
textarea = document.createElement("TEXTAREA");
textarea.setAttribute("id", "txt");
form.appendChild(input);
form.appendChild(textarea);
document.body.appendChild(form);
document.getElementById("abc").method = "post";
}
give();
function fo(event){
a = document.getElementById("txt").value;
cfm = confirm("Are you sure you want changes");
if (cfm == false ) {
div = document.createElement("DIV");
p = document.createElement("P");
ptxt = document.createTextNode("test");
p.setAttribute("id", "centr");
p.appendChild(ptxt);
div.appendChild(p);
document.body.appendChild(div);
event.preventDefault();
}
}
</script>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.