如何解决HTML:尝试在文本框中显示javascript ECDSA签名的十六进制值时出现“未定义”结果
我正在尝试通过使用html通过按下按钮显示签名值来设计JavaScript ECDSA算法的GUI。不幸的是,在文本框中显示的值是“未定义”的代码,如下所示:
<input type="button" Value="click me" onclick="sign()" />
<input type="text" id="txtOut" />
HTML:
def quadraticRegression(data,dErr):
a = 1 #Starting values
b = 1
c = 1
a_momentum = 0 #Momentum to counter steady state error
b_momentum = 0
c_momentum = 0
estimate = [a*x**2 + b*x + c for x in range(len(data))] #Estimate curve
error = MSE(data,estimate) #Get errors 'n stuff
errorOld = 0
lr = 0.0000000001 #learning rate
while abs(error - errorOld) > dErr:
#Fit a (dE/da)
deda = sum([ 2*x**2 * (a*x**2 + b*x + c - data[x]) for x in range(len(data)) ])/len(data)
correction = deda*lr
a_momentum = (a_momentum)*0.99 + correction*0.1 #0.99 is to slow down momentum when correction speed changes
a = a - correction - a_momentum
#fit b (dE/db)
dedb = sum([ 2*x*(a*x**2 + b*x + c - data[x]) for x in range(len(data))])/len(data)
correction = dedb*lr
b_momentum = (b_momentum)*0.99 + correction*0.1
b = b - correction - b_momentum
#fit c (dE/dc)
dedc = sum([ 2*(a*x**2 + b*x + c - data[x]) for x in range(len(data))])/len(data)
correction = dedc*lr
c_momentum = (c_momentum)*0.99 + correction*0.1
c = c - correction - c_momentum
#Update model and find errors
estimate = [a*x**2 +b*x + c for x in range(len(data))]
errorOld = error
print(error)
error = MSE(data,estimate)
return a,b,c,error
请原谅我的英语。我不是母语人士。
解决方法
这是可执行DEMO的更好语义。
我用愚蠢的值重新创建了Secp256k1
,priv
和digest
。
我也是:
- 没有使用HTML映射来映射JS,相反,我使用了
Element.addEventListener
方法来绑定事件,这将减少代码和UI之间的耦合。 -
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>
,
根据我的评论,这可能是您要查找的内容:
// 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">
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。