从文本区域中选取数组后,在 for 循环中使用 jQuery prepend()
您好,感谢您的阅读。
我试图允许用户将文本粘贴到文本区域字段中,然后使用他们粘贴的内容。
该应用程序的范围有限,但用户将粘贴 csv 文件的内容,其中第一列与我设置的 div Id 对齐。
由于某种原因,当我在这个循环中发出警报时,它会完美地发出警报。问题是,当我尝试 prepend() 内容而不是更改它们时,它什么也没做:
$('#datainput').submit(function () {
csvData = $("#csvData").val();
csvData = csvData.split('\n');
var iterationNum;
var contentText;
return function() {
for (var i=0, lngth=csvData.length; i < lngth; i+=1) {
csvData[i] = csvData[i].split(',');
if (!!$('#' + csvData[i][0]).length){
iterationNum = '#' + csvData[i][0]
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
$(iterationNum).prepend(contentText);
}
}
}();
});
另一方面,这是有效的(当我发出警报时它有效):
$('#datainput').submit(function () {
csvData = $("#csvData").val();
csvData = csvData.split('\n');
var iterationNum;
var contentText;
return function() {
for (var i=0, lngth=csvData.length; i < lngth; i+=1) {
csvData[i] = csvData[i].split(',');
if (!!$('#' + csvData[i][0]).length){
iterationNum = '#' + csvData[i][0]
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
alert(iterationNum + contentText);
}
}
}();
});
我什至通过用实际 id 替换 iterationNum 变量进行了测试例如#MyID,它在循环内不起作用。在循环之外使用每个相同的表达式,前置可以工作:
contentText = '<div class=\"percentageLabel\"></div>';
$(MyID).prepend(contentText);
但是如果我在循环内使用该代码,我什么也得不到。
你能发现我在这里做错了什么吗?
上面的第一个代码片段是我想要工作的代码片段,其他代码片段只是为了展示我还尝试过的内容
Hi and thanks for reading.
I am trying to permit users to paste text into a textarea field and then work with what they pasted.
The application is limited in scope but users will be pasting the contents of a csv file where the first column lines up with div Ids that I have set up.
For some reason, when I alert within this loop it alerts perfectly. The problem is when I try to prepend() the contents instead of alterting them, it just does nothing:
$('#datainput').submit(function () {
csvData = $("#csvData").val();
csvData = csvData.split('\n');
var iterationNum;
var contentText;
return function() {
for (var i=0, lngth=csvData.length; i < lngth; i+=1) {
csvData[i] = csvData[i].split(',');
if (!!$('#' + csvData[i][0]).length){
iterationNum = '#' + csvData[i][0]
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
$(iterationNum).prepend(contentText);
}
}
}();
});
This on the other hand works (it works when I alert):
$('#datainput').submit(function () {
csvData = $("#csvData").val();
csvData = csvData.split('\n');
var iterationNum;
var contentText;
return function() {
for (var i=0, lngth=csvData.length; i < lngth; i+=1) {
csvData[i] = csvData[i].split(',');
if (!!$('#' + csvData[i][0]).length){
iterationNum = '#' + csvData[i][0]
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
alert(iterationNum + contentText);
}
}
}();
});
I've even tested by replacing the iterationNum variable with an actual id like #MyID for example and it does not work within the loop. Using the each same expression outside of the loop the prepend works:
contentText = '<div class=\"percentageLabel\"></div>';
$(MyID).prepend(contentText);
But if I use that code within the loop I get nothing.
Can you spot what I'm doing wrong here?
The first code snippet above is the one I want to work, the others are simply to show what else I've tried
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来:
$(iterationNum)
可能不是有效的选择器。将其更改为:并告诉我它的警报是真还是假。
It seems like in:
$(iterationNum)
may not be a valid selector. Change it to:And tell me whether it alerts true or false.