javascript - TypeScript (JS) - 从 onchange 函数获取更改的值

标签 javascript html typescript

我想做的是在 HTMLInputElement 上触发 onchange 事件后获取新值。我知道我可以通过使用 element.value 来实现这一点,但这在大局中不起作用。请看下面的代码:

//This Works:
     elem.onchange = (ev: Event) => {
                    var newValue = (<HTMLInputElement>ev.srcElement).value; 
                    alert("Old: " + this._data[key] + ", New: " + newValue);
}

//Is there anyway I can get it to work like below? Currently I keep getting old values as new and old.
     elem.onchange = (ev: Event) => {
                    var attName = "checked"; //or "value"  for example
                    var newValue = ev.srcElement.getAttribute(attName); 
                    alert("Old: " + this._data[key] + ", New: " + newValue);
}

最佳答案

您不能使用 getAttribute("checked") 来判断复选框是否已选中。您需要使用 checked属性:

elem.onchange = function (ev) {
    var element = <HTMLInputElement>ev.srcElement,
        newValue: string | boolean;

    if (element.type === "checkbox") {
        newValue = element.checked;
    }
    else {
        newValue = element.value;
    }

    alert("Old: " + this._data[key] + ", New: " + newValue);
};

关于javascript - TypeScript (JS) - 从 onchange 函数获取更改的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981291/

相关文章:

javascript - onunload 无法与 Safari 中的 onbeforeunload 结合使用

javascript - 快速路由socket.io发出客户端未捕获的数据

javascript - 阻止 CSS :hover style propagation

angularjs - TypeScript 中指令、编译(前/后)的等价物是什么?

javascript - 类型 '{}' 不可分配给类型 '() =>

javascript - 单击 'Show More' 按钮时 Div 滑过 Div

javascript - 长数组列表渲染使 Angular.js 中的页面滚动变慢

javascript - HTML 和 Javascript 页面显示为空白

html - 一行 3 个 div,响应式(更改 div 大小而不是放到新行)

reactjs - react 路由器链接 typescript 错误