我试着在这里寻找答案,但是对于刚刚开始像我这样学习JavaScript的人来说,与我的问题相关的所有问题都有点过于复杂。
我想根据用户输入创建一个带有js / jquery的div网格(例如:如果用户选择width = 16,那么他将看到一个16x16网格)。
现在,我想,我将添加一个带有var $smallDiv = $('<div class="smallDiv"></div>');
的DOM元素
这是根据用户输入添加所需div数的循环:
function addDiv() {
$('#container').append($smallDiv);
}
for (i = 1; i <= divCounter * divCounter; i++){
addDiv();
}
问题是这总是只创建一个div。循环运行所需的次数,我已使用console.log()检查了这一点。所以它显然有效,但我感觉每次循环时,新的div会覆盖前一个。这不是我对.append()的期望。
我设法通过将$ smallDiv变量设为正常变量来解决问题(从其值中删除$,使其成为文本)但我很想知道这两个变量有何不同,为什么会这样?一个工作在上面的情况,但另一个没有。
让我轻松一点,我刚开始学习JS / jQuery。
答案 0 :(得分:2)
在循环中,您将多次追加相同的dom元素引用($smallDiv
),这意味着该元素只会添加一次。
相反,在循环的每次迭代中,您需要创建新实例 - 您可以使用.clone()来执行此操作。
function addDiv() {
$('#container').append($smallDiv.clone());
}
答案 1 :(得分:0)
作为Arun P Johny解决方案的替代方案,这似乎也有效:
string sqlCon = @"Data Source=.\SQLEXPRESS;" +
@"AttachDbFilename=|DataDirectory|\ChessDatabase.mdf;
Integrated Security=True;
Connect Timeout=30;
User Instance=True";
SqlConnection Con = new SqlConnection(sqlCon);
if (Con.State == ConnectionState.Closed)
{
Con.Open();
}
这种方式不是相同的dom元素,而是我们使用一个简单的字符串进行追加。