#javascript #html #hex
#javascript #HTML #шестнадцатеричное
Вопрос:
Я пытаюсь разработать графический интерфейс для алгоритма ECDSA javascript, используя html для отображения значения подписи нажатием кнопки. К сожалению, значение, которое отображалось в текстовом поле, было «неопределенным» в коде следующим образом:
const sig = Secp256k1.ecsign(priv, digest);
function sign() {
var txtOut = document.getElementById("txtOut");
txtOut = sig;
}
HTML:
<input type="button" Value="click me" onclick="sign()" />
<input type="text" id="txtOut" />
Пожалуйста, извините за мой английский. Я не являюсь носителем языка.
Комментарии:
1. Заменить
txtOut = sig;
наtxtOut.value = sig;
.2. Нет необходимости закрывать
input
/>
, используйте:<input ......>
.3. Для кнопки есть тег:
<button ....>text</button>
.4. Я не знаю, что
Secp256k1.ecsign
это такое, но подумайте о том, чтобы переместить его вsign
функцию, скажем:function sign() { var txtOut = document.getElementById("txtOut"); txtOut.value = Secp256k1.ecsign(priv, digest); }
, или, более подробно:function sign() { document.getElementById("txtOut").value = Secp256k1.ecsign(priv, digest); }
, или, прямо в кнопке :<button onclick="document.getElementById('txtOut').value = Secp256k1.ecsign(priv, digest)">click me</button>
. Обратите внимание на изменение двойных кавычек на одинарные.
Ответ №1:
Это гораздо лучшая семантика с исполняемой демонстрацией.
Я воссоздал Secp256k1
, priv
и digest
с немыми значениями.
Я также:
- я не сопоставил JS с использованием сопоставления HTML, вместо этого я использовал
Element.addEventListener
метод для привязки события, что позволит уменьшить связь между кодом и пользовательским интерфейсом. submit
таким<form />
образом, я могу получить целоеform
изevent
.- удалите
id
использование, чтобы оно могло взаимодействовать с любым содержимым DOM и включаться в любом месте. - Использовал
<button>
тег.
const Secp256k1 = { ecsign: (p, d) => p d }
const priv = 'XYZ';
const digest = '123';
const sig = Secp256k1.ecsign(priv, digest);
function sign(event) {
event.preventDefault();
event.target.result.value = sig;
}
function bindEvents() {
document.querySelector('form[name="sign"]').addEventListener('submit', sign, true);
}
window.onload = bindEvents;
<form name="sign">
<button>Click me</button>
<input type="text" name="result" />
</form>
Ответ №2:
В соответствии с моими комментариями, это может быть то, что вы ищете:
// Mimicking function
function Secp256k1_ecsign(priv, digest) {
return "some signature";
}
function sign() {
document.getElementById("txtOut").value = Secp256k1_ecsign("some priv value", "some digest value");
}
<button onclick="sign()">click me</button>
<input id="txtOut">