- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
弄清楚了如何让我的 javascript 工作,但这花了非常、非常、非常长的时间。足以让我希望继续避免使用 javascript。我从一个复杂的页面开始,然后不断地减少它并将其一点一点地更改为一个有效的简单示例。
最终发现方括号必须用两个反斜杠转义。但并非总是如此 - 显然在选择器中 - 而不是在 .attr('id', 'element[' + newNum + ']' 上下文中,然后转义是错误的。
我怎样才能更快地解决这个问题?我没有写太多 javascript 或使用 Firebug,因为我似乎浪费了太多时间在 c++ 错误会(通常)更快地找到,我对 javascript 感到恼火并避免使用它。
运行不适用于 Firebug 打开的代码没有显示任何错误。我试过脚本和控制台选项卡。
单击此按钮时,没有可见的 react 。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btnAdd').click(function() {
var num = $('.element').length-1;
var newNum = new Number(num + 1);
var newElem = $('#element[' + num + ']').clone().attr('id', 'element[' + newNum + ']');
$('#element[' + num + ']').after(newElem);
});
});
</script>
</head>
<body>
<form id="myForm">
<div id="element[0]" class="element">
description
<input type="text" name="element[0][description]" id="element[0][description]" value="desc0" />
</div>
<input type="button" id="btnAdd" value="add another name" />
</form>
</body>
</html>
单击此按钮时,将按预期创建一个新的列表元素。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btnAdd').click(function() {
var num = $('.element').length-1;
var newNum = new Number(num + 1);
var newElem = $('#element\\[' + num + '\\]').clone().attr('id', 'element[' + newNum + ']');
$('#element\\[' + num + '\\]').after(newElem);
});
});
</script>
</head>
<body>
<form id="myForm">
<div id="element[0]" class="element">
description
<input type="text" name="element[0][description]" id="element[0][description]" value="desc0" />
</div>
<input type="button" id="btnAdd" value="add another name" />
</form>
</body>
</html>
最佳答案
在选择器中,[]
有特殊的含义。它表示找到一个属性。例如,以下代码查找文件类型的输入:
var fileInputs = $('input[type=file]');
我不知道你为什么使用 []
作为你的 id,你可以使用 elementN
其中 N
是一个数字.
此外,虽然 JS 是一种 OOP 语言,但在创建原生对象时避免使用 new
语法(但也有异常(exception),例如预定长度的数组)。您的 newNum
可以这样创建:
var newNum = num + 1;
至于 Firebug,它是最受欢迎的调试工具之一。如果它没有报告任何内容,那么要么是他们的错误,要么是您的代码工作正常,但不是您预期的那样。
关于javascript - Firebug 能否在调试方面更有用?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16294476/
我是一名优秀的程序员,十分优秀!