从文本区域中选取数组后,在 for 循环中使用 jQuery prepend()

发布于 2024-10-24 10:35:34 字数 1948 浏览 6 评论 0原文

您好,感谢您的阅读。

我试图允许用户将文本粘贴到文本区域字段中,然后使用他们粘贴的内容。

该应用程序的范围有限,但用户将粘贴 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

马蹄踏│碎落叶 2024-10-31 10:35:34

看起来:

iterationNum = '#' + csvData[i][0]; /* Don't forget your ;'s! */
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
$(iterationNum).prepend(contentText);

$(iterationNum) 可能不是有效的选择器。将其更改为:

iterationNum = '#' + csvData[i][0]; /* Don't forget your ;'s! */
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
alert(( $(iterationNum)[0] != null  ));

并告诉我它的警报是真还是假。

It seems like in:

iterationNum = '#' + csvData[i][0]; /* Don't forget your ;'s! */
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
$(iterationNum).prepend(contentText);

$(iterationNum) may not be a valid selector. Change it to:

iterationNum = '#' + csvData[i][0]; /* Don't forget your ;'s! */
contentText = '<div class=\"percentageLabel\">' + csvData[i][1] + '</div>';
alert(( $(iterationNum)[0] != null  ));

And tell me whether it alerts true or false.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文