показать html форматированный текст внутри диалогового окна jquery при нажатии кнопки диалога

Вот пример рекурсивного алгоритма для обращения к односвязному списку. На ноутбуке со следующей спецификацией (память 4G, процессор Intel Core i5 2.3GHz, 64-разрядная версия Windows 7) эта функция будет запущена с ошибкой StackOverflow для связанного списка размером около 10 000.

Могу сказать, что мы должны использовать рекурсию разумно, всегда принимая во внимание масштаб системы. Часто рекурсия может быть преобразована в итеративную программу, которая масштабируется лучше. (Одна итеративная версия того же алгоритма приведена в нижней части страницы, она меняет один и тот же список размером 1 миллион за 9 миллисекунд.)

    private static LinkedListNode doReverseRecursively(LinkedListNode x, LinkedListNode first){

    LinkedListNode second = first.next;

    first.next = x;

    if(second != null){
        return doReverseRecursively(first, second);
    }else{
        return first;
    }
}

public static LinkedListNode reverseRecursively(LinkedListNode head){
    return doReverseRecursively(null, head);
}

Итеративная версия того же алгоритма:

    public static LinkedListNode reverseIteratively(LinkedListNode head){
    return doReverseIteratively(null, head);
}   

private static LinkedListNode doReverseIteratively(LinkedListNode x, LinkedListNode first) {

    while (first != null) {
        LinkedListNode second = first.next;
        first.next = x;
        x = first;

        if (second == null) {
            break;
        } else {
            first = second;
        }
    }
    return first;
}


public static LinkedListNode reverseIteratively(LinkedListNode head){
    return doReverseIteratively(null, head);
}
0
задан Charles Brengel 13 July 2018 в 21:11
поделиться

1 ответ

Вы были близки с $("#fielderrors div").html(presubfields);, но это говорит, что найти элемент div, который находится внутри другого элемента с идентификатором fielderrors. В вашем HTML нет такого элемента.

Вместо этого вы можете просто использовать только идентификатор (ID-элементы должны быть уникальными), поэтому в открывшейся функции будет $("#fielderrors").html(presubfields);.

Теперь у вас есть html div, поэтому следующий шаг - либо .show () и / или .hide () элементы при нажатии соответствующих кнопок. Пример ниже.

var presubfields = "The following fields contain errors: <br> member status <br> member since";
var presubdetail = "I am an example of an error detail.";

$(function() {
  $("#dialogpresubval").dialog({
    autoOpen: false,
    hide: "puff",
    modal: true,
    closeOnEscape: false,
    resizable: true,
    draggable: true,
    title: "Pre-Submit Validation Errors",
    open: function() {
      $("#fielderrors").html(presubfields)
      $("#errordetail").html(presubdetail);
    },
    buttons: [{
        text: "Continue",
        click: function() {
          var button = $(this).prop("id");
          console.log("4127 You clicked on:", button);
          $(this).dialog("close");
        },
      },
      {
        text: "Show Fields",
        click: function() {
          $("#fielderrors").show();
          $("#errordetail").show();
        },

      },
      {
        text: "Show Details",
        click: function() {
          $("#fielderrors").hide();
          $("#errordetail").show();
        },
      }
    ],
    position: {
      my: "center center",
      at: "center center"
    }

  });
  // show the modal
  $( "#dialogpresubval" ).dialog( "open" );
});
<link href="https://code.jquery.com/ui/1.11.4/themes/black-tie/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>

<div id="dialogpresubval" title="Pre-Submit Validation Errors" style="display:none">
  <div id="fielderrors" style="display:none"> &nbsp; </div>
  <div id="errordetail" style="display:none"> &nbsp; </div>
</div>

1
ответ дан Andrew Lohr 17 August 2018 в 12:08
поделиться
  • 1
    Эндрю, спасибо! Я запустил фрагмент кода как в Chrome, так и в IE, и он работает именно так, как мне нужно. Я обновил свои сценарии и попробовал, и у меня все еще есть проблема, поэтому мне нужно вернуться и посмотреть, что я сделал, что мешает работе. – Charles Brengel 13 July 2018 в 23:45
  • 2
    @CharlesBrengel, пожалуйста! если это ответит на ваш первоначальный вопрос, не стесняйтесь принять его. Также, если у вас есть другой вопрос, вы всегда можете опубликовать другое. – Andrew Lohr 14 July 2018 в 00:28
  • 3
    Эндрю, я думаю, что принял ваш ответ. Если бы я этого не сделал, просто ответь. Еще раз спасибо. – Charles Brengel 14 July 2018 в 01:29
  • 4
    – Charles Brengel 14 July 2018 в 01:31
  • 5
    @CharlesBrengel попробует задать другой вопрос о переполнении стека несколькими подробностями о вашей новой проблеме. Вы также можете отправить мне сообщение, и я посмотрю на него. На данный момент я не уверен, какова ваша новая проблема. – Andrew Lohr 14 July 2018 в 04:07
Другие вопросы по тегам:

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