javascript - преобразование нескольких кодов из пользовательского ввода и отображение преобразованных символов в виде строки - PullRequest
0 голосов
/ 18 мая 2018

Это продолжение моего предыдущего вопроса .Мне удалось создать скрипт, который преобразует один код из пользовательского ввода в кодовую точку Unicode, а затем преобразует его в соответствующий символ из специального иероглифического шрифта.Вот мой код:

<body>
<input id="userInput" name="userInput" type="text">
<button id="convert">Click me!</button>
<div id="hieroglyphs">
    <p id="AbydosWord"></p>
</div>
<script>
    $(document).ready(function() {
        $("#convert").click(function(){
            var GardinerToUnicodeCodePoint = {
                        "A1"    :"995328",
                        "A1A"   :"995329",
                        "A1B"   :"995330",
                        "A1C"   :"995331",
                        "A2"    :"995332",
                        "A2A"   :"995333",
                    };
            var userInput = $("#userInput").val();
            if (userInput in GardinerToUnicodeCodePoint) {
            var convertedCode = String.fromCodePoint(GardinerToUnicodeCodePoint[userInput]);
                $("#AbydosWord").empty();
                $("#AbydosWord").append(convertedCode);
                } else {
                    $("#AbydosWord").empty();
                    $("#AbydosWord").append("?");
                }
            });
            });
</script>
</body>

Теперь я хочу создать функцию, которая будет использовать пользовательский ввод в форме нескольких кодов (например, A1 A2A A1C) и преобразовывать его в строку иероглифов.Это где я дошел до сих пор, но сейчас это не работает.

<body>
<input id="userInput" name="userInput" type="text">
<button id="convert">Click me!</button>
<div id="hieroglyphs">
    <p id="AbydosWord"></p>
</div>
<script>
    $(document).ready(function() {
        $("#convert").click(function(){
            var GardinerToUnicodeCodePoint = {
                        "A1"    :"995328",
                        "A1A"   :"995329",
                        "A1B"   :"995330",
                        "A1C"   :"995331",
                        "A2"    :"995332",
                        "A2A"   :"995333",
                    };
            var finalCodeHolder = "";
            var userInput = $("#userInput").val();
            var userInputSplit = userInput.split(" ");
            for (i = 0; i < userInputSplit.length; index++) {
                if (userInputSplit[i] in GardinerToUnicodeCodePoint) {
                var convertedCode = String.fromCodePoint(GardinerToUnicodeCodePoint[userInputSplit[i]]);
                finalCodeHolder.push(convertedCode);
                } else {
                    var convertedCode = "?";
                    finalCodeHolder.push(convertedCode);
                }
            }
            $("#AbydosWord").append(finalCodeHolder);
            });
            });
</script>
</body>

Я думаю, что это проблема с массивом convertedCode и методом .push().Я хотел бы получить ваш вклад по этой проблеме.

1 Ответ

0 голосов
/ 18 мая 2018

После многих попыток я, наконец, сделал это.

Вот решение:

<script>
    $(document).ready(function() {
        $("#convert").click(function(){
            var GardinerToUnicodeCodePoint = {
                        "A1"    :"995328",
                        "A1A"   :"995329",
                        "A1B"   :"995330",
                        "A1C"   :"995331",
                        "A2"    :"995332",
                        "A2A"   :"995333",
                        "A3"    :"995334",
                        "A3A"   :"995335",
                        "A3B"   :"995336",
                    };
            var finalCodeHolder = "";
            var userInput = $("#userInput").val();
            var userInputSplit = userInput.split(" ");
            $("#AbydosWord").empty();
                for (i = 0; i < userInputSplit.length; i++) {
                    if (userInputSplit[i] in GardinerToUnicodeCodePoint) {
                    var convertedCode = String.fromCodePoint(GardinerToUnicodeCodePoint[userInputSplit[i]]);
                    $("#AbydosWord").append(convertedCode);
                    } else {
                        var convertedCode = "?";
                        $("#AbydosWord").append(convertedCode);
                    }
                }
            });
        });
</script>

Теперь я попытаюсь найти способ заставить его жить - я пытаюсь избежать кнопкищелкните для преобразования, это должно быть как обычный ввод текста.

...