1

您好,感谢您的阅读。

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

该应用程序的范围有限,但用户将粘贴 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); 
                }
            }   

        }();
    }); 

我什至通过用#MyID 之类的实际ID 替换iterationNum 变量进行了测试,例如它在循环中不起作用。在循环之外使用每个相同的表达式,前置工作:

                        contentText = '<div class=\"percentageLabel\"></div>';
                    $(MyID).prepend(contentText); 

但是,如果我在循环中使用该代码,我什么也得不到。

你能发现我在这里做错了吗?

上面的第一个代码片段是我想要工作的代码片段,其他代码片段只是为了展示我尝试过的其他内容

4

1 回答 1

1

好像在:

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  ));

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

于 2011-03-20T02:39:23.570 回答