js实时监听input输入框值的变化

实习日记之通过调用common chemistry的api接口实现输入keyword查找cas号和mw。做了一个简单的html网页,用到了ajax技术。比较简单,适合刚入门的宝学习参考。代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="application/javascript">function onInputChange(event){console.log(event.target.value);if(event.target.value == ''){document.getElementById("cas").innerText = '';document.getElementById("mw").innerText = '';}}function loadCAS() {// document.getElementById("cas").innerText = '';// document.getElementById("mw").innerText = '';var flag = 1;var searchurl = 'https://commonchemistry.cas.org/api/search?q='; // 获取 JSON 数据的链接var request;if (window.XMLHttpRequest) {request = new XMLHttpRequest(); //发送 Ajax 请求,适用于 Chrome, mozilla 等浏览器 } else if (window.ActiveXObject) {request = new ActiveXObject("Microsoft.XMLHTTP"); // 发送 Ajax 请求,适用于 IE 浏览器 }var keyword = document.getElementById("keyword").value;searchurl += encodeURIComponent(keyword);request.open("GET", searchurl, false);request.onreadystatechange = function() {if (request.readyState == 4 && request.status == 200) {var response = request.responseText;console.log(JSON.parse(response));if(JSON.parse(response).count.toString() =='0'){document.getElementById("cas").innerText = '暂无数据';flag  = 0;}else{document.getElementById("cas").innerHTML = JSON.parse(response).results[0].rn;}}else if(request.readyState == 4 && request.status == 404){}}request.send();if(flag == 1){loadMW();}}function loadMW(){var detailurl = 'https://commonchemistry.cas.org/api/detail?cas_rn='; // 获取 JSON 数据的链接var request;if (window.XMLHttpRequest) {request = new XMLHttpRequest(); //发送 Ajax 请求,适用于 Chrome, mozilla 等浏览器 } else if (window.ActiveXObject) {request = new ActiveXObject("Microsoft.XMLHTTP"); // 发送 Ajax 请求,适用于 IE 浏览器 }var cas = document.getElementById("cas").innerText.toString();console.log('loadMW-cas:'+cas);detailurl += encodeURIComponent(cas);request.open("GET", detailurl, false);request.onreadystatechange = function() {if (request.readyState == 4 && request.status == 200) {var response = request.responseText;console.log(JSON.parse(response));document.getElementById("mw").innerHTML = JSON.parse(response).molecularMass;}else if(request.readyState == 4 && request.status == 404){}}request.send();}</script></head>
<body><label for="keyword"> Keyword: </label><input type="text" id="keyword" name="keyword"  oninput="onInputChange(event)" ><br><div>CAS: <span id="cas"></span></div><div>MW: <text id="mw"></text></div><button type="button" onclick="loadCAS()">点击加载</button></body></html>

过程中遇到的问题:当我清空keyword值后,上一次搜索的cas和mw依然存在。

方案一:js实时监听input输入框值的变化,需要用到input监听事件:

   <input type="text" id="keyword" name="keyword"  oninput="onInputChange(event)" >

调用对应的js监听函数:

 function onInputChange(event){console.log(event.target.value);if(event.target.value == ''){document.getElementById("cas").innerText = '';document.getElementById("mw").innerText = '';}}

刚开始在这里踩了个坑,我以为event.target.value的值是null,所以条件写成了if(event.target.value == null),数据一直无法清空。后来我改成了空字符串if(event.target.value == '')就对了。

方案二:在点击加载按钮的时候,先将元素内容清空再进行ajax请求,直接在点击事件触发的方法里清空数据即可。

//点击事件 
function loadCAS() {document.getElementById("cas").innerText = '';document.getElementById("mw").innerText = '';......
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/309185.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言之整型提升

文章目录 1 有可能出现的问题2 产生以上问题的原因&#xff08;整型提升&#xff09;3 整型提升的过程4 整型提升示例5 总结 1 有可能出现的问题 代码如下 #include <stdio.h>int main () {int a -1;unsigned int b 1;if (a < b) {printf("a < b");}…

集群部署篇--Redis 哨兵模式

文章目录 前言一、哨兵模式介绍&#xff1a;1.1 介绍&#xff1a;1.2 工作机制&#xff1a; 二、哨兵模式搭建&#xff1a;2. 1 redis 主从搭建&#xff1a;2.2 setinel 集群搭建&#xff1a;2.2.1 配置&#xff1a; sentinel.conf &#xff1a;2.2.2 运行容器&#xff1a;2.2.…

Java设计模式实战:从If-Else到策略+工厂方法的演变

引言 可能很多开发者&#xff0c;虽然理解了设计模式的概念&#xff0c;但在实际工作中应用却是另一回事。本篇文章旨在用一个具体的案例来展示如何将设计模式应用到工作的编程问题中。正所谓&#xff1a;“纸上得来终觉浅&#xff0c;绝知此事要躬行。”理论的学习固然重要&a…

C++ stack使用、模拟实现、OJ题

目录 一、介绍 二、常用函数 三、模拟实现 四、OJ练习题 1、最小栈 2、栈的压入、弹出序列 3、逆波兰表达式(后缀转中缀) 4、中缀转后缀思路 5、用栈实现队列 一、介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

HTML5+CSS3+JS小实例:过年3D烟花秀

实例:过年3D烟花秀 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><…

C++ Primer Plus----第十二章--类和动态内存分布

本章内容包括&#xff1a;对类成员使用动态内存分配&#xff1b;隐式和显式复制构造函数&#xff1b;隐式和显式重载赋值运算符&#xff1b;在构造函数中使用new所必须完成的工作&#xff1b;使用静态类成员&#xff1b;将定位new运算符用于对象&#xff1b;使用指向对象的指针…

Java中的反射原理,为什么要使用反射以及反射使用场景

什么是反射 反射是框架的灵魂 JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称…

用C语言函数求x^y-------(C每日一编程)

编写函数,计算x^y&#xff08;x,y都是整数&#xff09;。 参考代码&#xff1a; int fun(int x, int y) {int k 1, i;for (i 1; i < y; i)k k * x;return k; } int main() {int x, y;scanf("%d%d", &x, &y);printf("%d", fun(x, y));retur…

Leetcode算法系列| 10. 正则表达式匹配

目录 1.题目2.题解C# 解法一&#xff1a;分段匹配法C# 解法二&#xff1a;回溯法C# 解法三&#xff1a;动态规划 1.题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 1.‘.’ 匹配任意单个字符 2.‘.’ 匹配任意单个字…

JavaSE语法之十二:Object类

文章目录 一、概念二、获取对象信息三、对象比较equals方法四、hashcode方法 一、概念 Object是Java默认提供的一个类。Java里面除了Object类&#xff0c;所有的类都是存在继承关系的&#xff0c;默认会继承Object父类&#xff0c;即所有的类的对象都可以使用Object的引用进行…

算法分析与设计基础

一、绪论 1.算法的概念及特征 1.1 定义&#xff1a; 算法是指求解某个问题或是某类问题的一系列无歧义的指令&#xff0c;也就是说&#xff0c;对于符合一定规范的输入&#xff0c;能够在有限时间内获得所要求的输出。 1.2 特征&#xff1a; 输入&#xff1a;算法中的各种运…

最新版 BaseRecyclerViewAdapterHelper4:4.1.2 最简单的QuickViewHolder用法,最简洁的代码,复制可用

为了照顾新手&#xff0c;尽量详细&#xff0c;高手勿喷&#xff01;&#xff01;&#xff01; 怕麻烦的话可以直接下载源码&#xff1a;https://download.csdn.net/download/ERP_LXKUN_JAK/88678044?spm1001.2014.3001.5503 先看文件结构&#xff0c;是不是很简单 AndroidSt…