Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在input oninput中将javascript方法作为回调调用_Javascript_Html_Callback - Fatal编程技术网

在input oninput中将javascript方法作为回调调用

在input oninput中将javascript方法作为回调调用,javascript,html,callback,Javascript,Html,Callback,班{ 康斯特波特,w{ t=t; 这个.w=w; } 阅读{ 设t=document.getElementByIdwien\u t.value; this.t=parsefloat; console.logthis; } 读{ 设w=document.getElementByIdwien_w.value; this.w=w; console.logthis; } 算计{ this.w=2.9e-3/this.t; document.getElementByIdwien_w.value=this.

班{ 康斯特波特,w{ t=t; 这个.w=w; } 阅读{ 设t=document.getElementByIdwien\u t.value; this.t=parsefloat; console.logthis; } 读{ 设w=document.getElementByIdwien_w.value; this.w=w; console.logthis; } 算计{ this.w=2.9e-3/this.t; document.getElementByIdwien_w.value=this.w; console.logthis; } } 设wien=newclasswien0,0; window.onload=函数{ document.getElementByIdwien\u t.addEventListenerinput,wien.read\u t; document.getElementByIdwien\u w.addEventListenerinput,wien.read\u w; document.getElementByIdwien\u solve.addEventListenerclick,wien.calculate; } @字符集utf-8; 身体 { 字体:100%Arial,Helvetica,无衬线; 背景:123c69; 文本对齐:左对齐; 颜色:000; } /*定义页面布局*/ 容器 { 宽度:800px; 背景:fff; 填充:15px; 保证金:0自动; 边界:无; 字体系列:Arial、Helvetica、无衬线字体; } .缩进 { 填充:15px; 保证金:0; } .左缩进 { 填充:15px 0 15px 180px; 保证金:0; } h1,h4 { 填充:0; 保证金:0; } 氢 { 填充底部:0; 保证金:0; } p、 h4 { 填充:15px 0 0 15px; 保证金:0; } ol { 左侧填充:45px; 保证金:0; } 天文方程 维恩定律 这个方程描述了 发射热光谱的物体的温度和 发射光谱中最亮部分的波长

温度: 凯尔文 波长: 米
使用方法绑定的事件处理通常比oninput更好

请参阅Mozilla文档:

下面是一个简短的总结:

设置id属性。 初始化方程类。 将方法绑定到输入事件。
也许您需要使用objectName.functionName而不是className.functionName来调用它

比如说

下面的格式给出了相同的错误公式。read不是一个函数

<input type="text" id="myInput" oninput="equation.read()">

我尝试复制您的问题,似乎使用static将使您能够调用类中的函数,而不使用它将导致您遇到的错误

Html


静态方法允许您对类本身调用方法。

在其他条件相同的情况下,应该可以正常工作。你需要提供一个有效的解决方案。使用question editor.FWIW的实时演示功能,使用onxyz属性进行事件处理不是最佳做法,尤其是因为您在处理程序文本中调用的任何函数或引用的变量都必须是全局函数。在第一个例子中,read\t必须是一个全局函数。在第二个例子中,等式必须是全局变量。全局名称空间非常拥挤;最好避免增加。请改用addEventListener和类似工具。感谢您的反馈,Quentin和T.J。我是javascript/html编程和堆栈溢出的初学者,因此非常感谢您的建议。我天真地假设输入标记中的onxyz属性是通过其他方式添加的。这完全是真的吗?通过在JS文件中设置回调函数来尽可能地分离html布局和javascript编程是最佳做法吗?虽然使用addEventListener通常更好,但它没有解释为什么equation.read\t不是这里的函数。
<input type="text" id="myInput" oninput="equationObject.read()">
class equation{
    read(){
        var x = document.getElementById("myInput").value;
        console.log(x);
    }

}

equationObject = new equation();
<input type="text" oninput="equation.read_t()"/>
class equation {
    constructor() {

    }
    static read_t() {
        console.log("Hello");
    }
}