gpt4 book ai didi

javascript - 使用JavaScript在html中动态添加文本框(出现语法错误)

转载 作者:行者123 更新时间:2023-11-27 23:24:28 25 4
gpt4 key购买 nike

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var i =1;
function addkid(){
if(i<=3){
i++;
var div=document.createElement('div');
div.innerHTML="Child:<input type="text" name="child_1">
<input type="button" id="add_kid()" onclick="addkid()" value="+" />
<input type="button" value="-" onclick="removekid(this)">";
document.getElementById('kids').appendChild(div);
}
}
function removekid(div){
document.getElementById('kids'.removeChild(div.parentNode);
i--;
}


</script>
</head>
<body>
<form>
Name: <input type="text" name="name"><br/>
<div id="kids">
Child:<input type="text" name="child_1">
<input type="button" id="add_kid()" onclick="addkid()" value="+" />(limit 3)


</div>
Phone: <input type="text" name="phone"><br/>
<input type="submit" name="submit" value="submit" />

</form>

</body>

</html>

这是我的 html 代码,它有一个 JavaScript 函数,可以在单击“+”按钮时动态添加一个文本框,但该程序无法运行并报错:

(check5.php?name=&child_1=&phone=:10 Uncaught SyntaxError: Unexpected identifier)` in the JavaScript function part 1.

请帮我解决这个问题

最佳答案

问题在于此赋值中的字符串文字:

div.innerHTML="Child:<input type="text" name="child_1">
<input type="button" id="add_kid()" onclick="addkid()" value="+" />
<input type="button" value="-" onclick="removekid(this)">";

当您的字符串声明为 " 字符时,您必须使用反斜杠来转义字符串本身所需的任何 " 字符。此外,字符串文字中间不能有换行符(除非它是用反引号而不是引号声明的 ES6 字符串)。

所以试试这个,转义并且没有回车:

div.innerHTML = "Child:<input type=\"text\" name=\"child_1\">"
+ " <input type=\"button\" id=\"add_kid()\" onclick=\"addkid()\" value=\"+\" />"
+ " <input type=\"button\" value=\"-\" onclick=\"removekid(this)\">";

或者您可以用单引号将字符串括起来,这样您就不必转义双引号了:

div.innerHTML = 'Child:<input type="text" name="child_1">'
+ ' <input type="button" id="add_kid()" onclick="addkid()" value="+" />'
+ ' <input type="button" value="-" onclick="removekid(this)">';

无论哪种方式,我都通过连接三个字符串文字来删除字符串中的换行符,以便它仍然可以在您的代码中格式化为三行。你可以改为只把它写成一长行:

    div.innerHTML = 'Child:<input type="text" name="child_1"> <input type="button" id="add_kid()" onclick="addkid()" value="+" /> <input type="button" value="-" onclick="removekid(this)">';

如果您在字符串中需要一个实际的换行符,您可以使用 \n,例如 "This string has a newline here:\nThank you."

更新:您还缺少 ) 在此行的 'kids' 之后:

document.getElementById('kids'.removeChild(div.parentNode);

展开下面的代码片段可以看到上面的问题已经修复,并且代码可以正常工作:

var i = 1;

function addkid() {
if (i <= 3) {
i++;
var div = document.createElement('div');
div.innerHTML = 'Child:<input type="text" name="child_1">'
+ ' <input type="button" id="add_kid()" onclick="addkid()" value="+" />'
+ ' <input type="button" value="-" onclick="removekid(this)">';
document.getElementById('kids').appendChild(div);
}
}

function removekid(div) {
document.getElementById('kids').removeChild(div.parentNode);
i--;
}
<form>
Name:
<input type="text" name="name">
<br/>
<div id="kids">
Child:
<input type="text" name="child_1">
<input type="button" id="add_kid()" onclick="addkid()" value="+" />(limit 3)
</div>
Phone:
<input type="text" name="phone">
<br/>
<input type="submit" name="submit" value="submit" />
</form>

关于javascript - 使用JavaScript在html中动态添加文本框(出现语法错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39283622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com