使用JavaScript在html中动态添加文本框(出现语法错误)
Dynamically adding text boxes in html using JavaScript (syntax error occurs)
<!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 .
请帮我解决这个问题
问题是这个赋值中的字符串文字:
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."
Update:您在这行'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未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 未捕获的语法错误:意外的标记{
- "未捕获的语法错误:意外的标记}"
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- $(input[]).仅在firefox中出现每个抛出语法错误
- 为什么浏览器没有为语法错误抛出异常
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获的语法错误:意外的令牌,
- jQuery.getJSON失败,语法错误
- "未捕获的语法错误:意外的标记"角度JS
- 参数列表Three.js之后的未捕获语法错误:缺少)
- 循环的Javascript冻结浏览器,没有语法错误
- 为什么匿名函数本身就是javascript中的语法错误
- 这怎么不是语法错误?这毫无意义!(javascript)
- 语法错误:缺少:在属性 ID 之后
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]