Дождитесь завершения предыдущего .append ()

Простое решение проблемы заключается в том, чтобы удалить непрозрачный, примененный к основному цвету в colors.xml

Когда непрозрачный применяется к основному цвету, цветовой код выглядит так: # aca688ff, где он например, «# F50057» (буквенно-цифровой код букв без непрозрачности).

Надеемся, что вышеупомянутое решение поможет вам устранить проблему.

13
задан zx81 4 August 2014 в 11:01
поделиться

4 ответа

The below solution is working on all the browsers especially IE6. The response time in Firefox is 10 sec, but in IE6 it is 2 min 30 sec.

$('#printall1').click(function() {
    $('#fourElementsonly').empty();
    var cleartable = 0;
    var maxlimit = 0;
    var presentarraycount = 0;

    $.post("/PortalUserReport/getjunkdata", null, function(response, status) {
        var report = eval(response);// we have 6000 records in the report now
        var totalRecordsCount = report.length; // count = 6000 
        var totalRecordsCountfortheLoop = totalRecordsCount;
        var arraycount = Math.ceil(totalRecordsCount / 1000);
        var reports = new Array(arraycount); // reports[6]
        for (var i = 0; i < arraycount; i++) {
            $('#fourElementsonly').append('<table border = "1" id = "Portal_User_elements' + i + '" style = " border-collapse:collapse; width:800px; margin:0px; padding:0px; border-color:black"> </table>');
        }
        reports[presentarraycount] = "";
        $.each(report, function(x) {
            if (cleartable == 0) {
                for (var i = 0; i < arraycount; i++) {
                    $('#Portal_User_elements' + i).empty(); 
                }
                cleartable++;
            }

            if (recordnumber <= totalRecordsCountfortheLoop) {
                reports[presentarraycount] += "<tr style = \"height:20px;  border: 1px Solid Black\"> <td style = \"width:50px; text-align:center \"> " + recordnumber + " </td>   <td style = \"width:350px;\"> Name :" + report[x].FirstName + "</td> <td style = \"width:200px;\"> UserName :" + report[x].UserName + " </td> <td style = \"width:200px; \"> Company : " + report[x].Company + " </td> </tr>";
                reports[presentarraycount] += "<tr style = \"height:20px;  border: 1px Solid Black\"> <td > </td> <td> Registration Date : <label class = \"datepicker\"> " + report[x].ActiveDate + " </label> <td> User CN : " + report[x].UserCN + " </td> <td> Status: " + report[x].Status + " </td> </ td>  </tr>";
                reports[presentarraycount] += "<tr style = \"height:20px;  border: 1px Solid Black\"> <td> </td> <td> User Privilege : " + report[x].Privileges + " </td> <td> </td> </tr>";
                maxlimit++;
                if (maxlimit == 1000) {
                    presentarraycount++;
                    reports[presentarraycount] = "";
                    maxlimit = 0;
                }
            }
            recordnumber++;
        });

        for (var i = 0; i < arraycount; i++) {
            $('#Portal_User_elements' + i).append(reports[i]);
        }
    });
});
0
ответ дан 1 December 2019 в 19:15
поделиться

К сожалению, функция jQuery append () не включает обратный вызов. На самом деле нет возможности проверить его завершение, так как это якобы происходит немедленно.

См. Здесь для получения информации о том, как эффективно использовать append. Это в значительной степени сводится к тому, что вы можете попытаться поместить весь текст в одну переменную и просто один раз использовать append.

[обновление] Поскольку у вас с самого начала есть все данные в объекте JSON, просто выполните цикл и поместите все в переменную, а затем просто добавьте это, когда закончите. [/ update]

16
ответ дан 1 December 2019 в 19:15
поделиться

Вы добавляете к разным элементам или к одному элементу? Если вы добавляете один элемент, может быть проще объединить все ваши данные и добавить их как один кусок.

Кроме того, откуда берутся данные? Если данные статические (не ajax), тогда вы сможете вызвать

$('selector').append(data1).append(data2).append(data3);
1
ответ дан 1 December 2019 в 19:15
поделиться

Я не известно о версии 2, но это работает в версии 1:

  1. Добавьте файл ресурсов в App_GlobalResources.
  2. В файле ресурсов вы можете определить строки с именами PropertyValueInvalid и PropertyValueRequired .
  3. ] В наборе событий Application_Start global.asax System.Web.Mvc.DefaultModelBinder.ResourceClassKey = "имя файла ресурсов" . граница-коллапс: коллапс; ширина: 800 пикселей; маржа: 0px; отступ: 0 пикселей; border-color: black
  4. Это означает, что вы также можете:

       for (var i = 0; i < arraycount; i++) {
            $('#Portal_User_elements' + i).empty(); 
        }
    

    становится (без цикла for!):

       $('.portalUserElements').empty();
    

    И:

    for (var i = 0; i < arraycount; i++) {
        $('#Portal_User_elements' + i).append(reports[i]);
    }
    

    Может стать:

    $('.portalUserElements').each(
         function(i) {
             $(this).append(reports[i]);
         }
    );
    

    Изменить : эти изменения предложено улучшить производительность вашего алгоритма, сохранив при этом все функции, которые он предоставляет.
    Вы можете сжать все в одной строковой переменной (включая таблицы) и добавить ее в конце.
    См. Статьи, которые предложил вам Расс Кэм в одном из его ответов.

5
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: