JavaScript实现页内锚点传值与输入框焦点交互

作者:异步漫步

时间:2026-10-28

浏览:631

本文介绍如何使用原生JavaScript实现页内锚点间的参数传递及输入框焦点交互。通过onfocus和onblur事件改变输入框背景色,利用URL中的get参数配合轮询机制,在页面不同锚点间同步数据,无需引入外部插件即可完成轻量级交互功能。

文章目录

本文通过具体实例,详细解析了利用JavaScript实现组件焦点状态与页内锚点之间数据传递的技术方案,旨在为开发者提供实用的参考思路。

这类轻量级的交互功能在现代移动端网页开发中具有较高的应用价值。

主要探讨如何实现当鼠标光标进入输入框时触发特定事件,而在离开输入框时触发另一事件,即便用户并未实际输入任何内容。

跨页面传值通常较为简单,但如何在同一页面内的不同锚点之间实现数据传递,是本文关注的重点。

基本目标

一、基本目标

构建一个包含输入框和超级链接的页面,初始状态下两者无直接关联。

鉴于功能模块较小,将两个独立功能整合在一个示例中进行演示。

1、输入框功能

实现交互逻辑:当光标聚焦于输入框时,背景色变为红色;当用户点击页面其他区域导致输入框失去焦点时,背景色恢复为灰色。

基本目标

2、超级链接功能

通过超级链接向页面底部的bottom锚点发起GET请求,传递参数text=1。该锚点下方包含一个被禁用的输入框,该输入框会持续轮询地址栏中的text参数。

在未点击链接前,URL中不存在text参数,因此该输入框始终显示为null。

点击超级链接后,下方输入框会在0.5秒后更新显示为1。由于处理频率达到毫秒级,用户感知上表现为实时响应。

基本目标

在禁用输入框上方设有一个back超级链接,点击后可清空页面参数传递状态。此时若再次滚动至底部,输入框将重新显示为null。

请注意页内锚点间成功传值时,浏览器的url:

基本目标

制作过程

二、制作过程

无需引入任何第三方插件,直接创建HTML页面即可实现,具体代码如下:

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>onfoucs</title>
</head>
  
<body>
<!--定义个输入框,onfocus是获得焦点,一旦把光标放上输入框则马上触发getFocus()参数。onblur则是失去焦点,也onfocus刚好反过来。-->
<p>
<input type="text" onfocus="getFocus()" onblur="loseFocus()"/>
</p>
  
<!--注意页内锚点传递参数的超级链接的语法,写用?接参数,再用#接锚点,多个参数则写成?texta=1&textb=2#bottom,用&链接-->
<p>
<a href="onfocus.html?text=1#bottom">锚点</a>
</p>
  
<!--这么多的li只是用来占行的~为了让大家看到锚点效果-->
<li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li>
  
<!--此超级链接相当于后退按钮-->
<p>
<a id="bottom" href="javascript:history.go(-1);">back</a>
</p>
  
<!--我就是那个被禁用的对话框-->
<p>
<input type="text" id="pollingtext" disabled="disabled"/>
</p>
  
</body>
</html>
<script>
/*一开始先把页面的背景颜色换成#eeeeee*/
window.onload=function(){
document.bgColor="#eeeeee";
Polling();
        }  
      
/*当对话框获得焦点就把背景颜色改成红色,反之则重新改成#eeeeee*/
function getFocus(){
document.bgColor="#ff0000";
    }  
      
function loseFocus(){
document.bgColor="#eeeeee";
    }  
      
/*这是取url get传值时的参数的专用正则表达式*/
function getUrlParam(name) {
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;
    }  
      
/*不停地轮询,检查是否有get参数传递过来了*/
function synchronous() {
document.getElementById("pollingtext").value =getUrlParam("text");
    }  
      
function Polling(){
synchronous();
setInterval("synchronous()", 500);
    }  
</script>

希望本文所述对大家的javascript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章