Как я могу получить значение строковой переменной, содержащей юникод, вне функции, в которой он создан? - PullRequest
0 голосов
/ 06 июля 2018

Я хочу получить доступ к переменной 'result' вне первой функции. зная, что это значение - это Unicode, например '& # xFE8F;'. поскольку я новичок в этом, я прошу вашей помощи. спасибо.

вот мой код. alert (r) показывает пустое поле диолога:

    var result = '';

    $( document ).ready(function() {

        $( function() {
            $( "#draggable" ).draggable({ snap: ".baseline, .BF, .AF"});
            $( "#draggable2" ).draggable({ snap: ".baseline, .font"});
            $( "#draggable3" ).draggable({ snap: ".baseline, .font"});
            $( "#selectable" ).selectable();
        });

        $( "#selectable" ).selectable({
            stop: function() {
                var result='';
                $('.ui-selected').each(function() {
                    result += $(this).text();
                 });   

            $("#result").html(result);
            $("#harf").html(result);

           }
        });


       $( "#draggable, #draggable2, #draggable3" ).draggable({
          drag: function() {                   
            alert(result);
          }
       });

  });

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Java-скрипт запускается при разборе. Вот почему мы используем $(document).ready() в качестве обработчика событий для выполнения кода после загрузки dom. И именно поэтому ваш глобальный еще не заполнен. Например, $(window).load() будет запускаться после $(document).ready(), поскольку первый будет ожидать загрузки всего контента, а второй - только dom. Поэтому этот код работает.

var string = "";



$(window).load(function(){
  alert(string);
  console.log("im forth after the alert and filled with the ready value: " + string);
});

$(document).ready(function(){

  $("#button").click(function(){
      console.log("I'm on click: " + string);
  });

  string = "I'm filled";
  console.log("im third and filled with the ready value: " + string);
});

console.log("im first but empty: " + string);

string = "initial value";

console.log("im second but filled with an initial value: " + string);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="button">Button</Button>

Редактировать: Добавлено несколько распечаток на консоли, чтобы показать, что происходит

Edit2: Ваш код должен быть примерно таким.

var result = '';
$( document ).ready(function() {
    $( function() {
        $( "#draggable" ).draggable({ snap: ".baseline, .BF, .AF"});
        $( "#draggable2" ).draggable({ snap: ".baseline, .font"});
        $( "#draggable3" ).draggable({ snap: ".baseline, .font"});
        $( "#selectable" ).selectable();
    });

    $( "#selectable" ).selectable({
        stop: function() {
            $('.ui-selected').each(function() {
                result += $(this).text();
            });   

            $("#result").html(result);
            $("#harf").html(result);
        }
    });


    $( "#draggable, #draggable2, #draggable3" ).draggable({
        drag: function() {                   
            alert(result);
        }
    });
});
0 голосов
/ 06 июля 2018

Согласно Mark Baijens изменил код, и он работает.

var result = '';
  
$( document ).ready(function() {
      result = '1';
      var r = result;
      alert(r);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Забота об использовании этого позже может быть решена, потому что вы создали глобальную переменную и к ней можно получить доступ где угодно.

Попробуйте это:

<script>
      var result = '';

        $( document ).ready(function() {
            $( "#selectable" ).selectable({
                stop: function() {
                    $('.ui-selected').each(function() {
                        result += $(this).text();

                     });   

                $("#result").html(result);
                $("#harf").html(result);

                var r = result ;
                alert(r);
               }
            });
        });

  </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...