HTML:当我尝试在文本框中显示javascript ECDSA签名的十六进制值时"undefined"结果



我正在尝试为javascript ECDSA算法设计GUI,使用html通过按下按钮来显示签名值。不幸的是,文本框中显示的值是"0";未定义的";代码如下:

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" />

请原谅我的英语。我不是母语人士。

这是一个更好的可执行DEMO语义。

我用哑值重新创建了Secp256k1privdigest

我也:

  • 没有使用HTML映射来映射JS,相反,我使用了Element.addEventListener方法来绑定事件,这将减少代码和UI之间的耦合
  • submit<form />,这样我就可以从event捕获整个form
  • 删除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>

根据我的评论,这可能是您想要的:

// 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">

最新更新