0

ユーザーがファイルをアップロードしているときに表示される [キャンセル] ボタンがあります。ユーザーがファイルのアップロードをキャンセルしたい場合は、[キャンセル] ボタンをクリックするとキャンセル メッセージが表示されます。

これを試みるときの唯一の問題は、メッセージを表示したい stopImageUpload 関数で cancel_image_file_name が未定義であると述べていることです。しかし、私は startImageUpload 関数でこれを定義しました。私の質問は、どうすれば startImageUpload 関数から cancel_image_file_name を取得し、それを stopImageUpload 関数で定義できるかということです。

以下は、2 つの関数を示すコードです。

startImageUpload 関数:

var cancelimagecounter = 0;

function startImageUpload(imageuploadform, imagefilename){

    cancelimagecounter++;

            var _cancelimagecounter = cancelimagecounter;

    $('.imageCancel').on("click", function(event) {
        var cancel_image_file_name = $(this).attr('cancel_image_file_name');

    return stopImageUpload(2, cancel_image_file_name);

});       
      return true;
}

イメージアップロード機能の停止:

var imagecounter = 0;

function stopImageUpload(success, imagefilename){

      var result = '';
      imagecounter++;

      if (success == 1){
         result = '<span class="imagemsg'+imagecounter+'">The file was uploaded successfully!</span><br/><br/>';      
         $('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" image_file_name="' + imagefilename + '">Remove</button><br/><hr/></div>'); 
      }
      else if (success == 2){
          result = '<span class="imageemsg">' + cancel_image_file_name + ' Upload Was Cancelled!</span><br/><br/>';
      }
      else {
         result = '<span class="imageemsg">There was an error during file upload!</span><br/><br/>';
      }


      return true;   
}
4

3 に答える 3

4

JavaScript 変数には関数レベルのスコープがあり、他の関数も取得するには、両方の関数の外でcancel_image_file_name定義します。


ところで、すでにその関数に渡しているため、関数から使用できimagefilenameますstopImageUpload

return stopImageUpload(2, cancel_image_file_name);

したがって、stopImageUpload関数で次の行を変更します。

result = '<span class="imageemsg">' + cancel_image_file_name + ' Upload Was Cancelled!</span><br/><br/>';

に:

result = '<span class="imageemsg">' + imagefilename + ' Upload Was Cancelled!</span><br/><br/>';
于 2012-05-14T16:43:07.750 に答える
0

「stopImageUpload」、「imagefilename」の 2 番目のパラメーターとして値を既に渡しています。それを使うだけです。

実際、同じ関数の他の場所でパラメーターを使用しています。

于 2012-05-14T16:44:02.180 に答える
0

次のようにコードを再構築します。

(function() {
    var cancelimagecounter = 0,
        imagecounter = 0,
        cancel_image_file_name;
    window.startImageUpload = function(imageuploadform,imagefilename) {
        ...
            cancel_image_file_name = ... // (remove the var)
        ...
    };
    window.stopImageUpload = function(success,imagefilename) {
        ...
        // cancel_image_file_name is not undefined now.
    };
})();
于 2012-05-14T16:44:25.267 に答える