我正在尝试为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语义。
我用哑值重新创建了Secp256k1
、priv
和digest
。
我也:
- 没有使用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">