1

こんにちは、読んでくれてありがとう。

ユーザーがテキストをtextareaフィールドに貼り付けてから、貼り付けたものを操作できるようにしようとしています。

アプリケーションの範囲は制限されていますが、ユーザーはcsvファイルの内容を貼り付け、最初の列が設定したdivIDと一致します。

何らかの理由で、このループ内でアラートを送信すると、完全にアラートが発生します。問題は、コンテンツを変更する代わりに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); 
                }
            }   

        }();
    }); 

たとえば、iterationNum変数を#MyIDなどの実際のIDに置き換えてテストしたところ、ループ内では機能しません。ループの外側で同じ式をそれぞれ使用すると、先頭に追加が機能します。

                        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 に答える