说起来,刚开始自己捣鼓网页那会儿,真是啥都觉得新鲜,也啥都觉得难。今天就想跟大家唠唠我当初跟这个 getElementById
死磕的经历。
那时候我就想搞个特简单的效果:页面上有个按钮,还有一段文字。我点一下按钮,那段文字就得变个样,比如内容换一下。听着是不是挺小儿科的?可当时真是让我头都大。
最初的困惑:我咋知道点的是哪个?要改的又是哪个?
你想,一个页面上那么多东西,按钮可能不止一个,文字段落也可能好几段。我在按钮的“点击事件”代码里,咋能精确地告诉浏览器,“喂,就是那个谁谁谁,你要给我变一下”?我试过想用“第几个段落”这种方式,但页面稍微一改动,顺序就乱,立马歇菜。这不行,太不靠谱。
后来也不知道是看哪篇帖子还是听谁提一嘴,说可以给网页上的每个元素(就是那些标签啥的)起个独一无二的名字,像身份证号一样。在网页代码里,这个东西叫 id
。
柳暗花明:找到组织的“身份证号”
我一听,有门儿!要是每个我想操作的东西都有个唯一的 id
,那不就能指名道姓地找到它吗?顺着这个思路摸索,就撞见 这个玩意儿。看名字大概也能猜到意思,“通过ID获取元素”。
我的实践过程大概是这样的:
- 第一步:起名字。 先找到我想控制的那段文字的HTML代码,比如它是个
<p>
标签,我就给它加上一个id
属性,比如id="welcome-text"
。这个名字得是这个页面里独一份的。 - 第二步:写代码去找它。 然后,在我那个按钮的点击触发的JavaScript代码里,我就写上
*("welcome-text")
。心里想着,这下总该能抓到那段文字。
新的小插曲:拿到的是个
写完一试,好像有点对,又好像不对。我试着用 alert
弹窗看看拿到的是结果弹出来一个类似 [object HTMLParagraphElement]
或者干脆就是 [object Object]
的东西。我当时就懵,说好的文字内容?怎么是这么个怪东西?我还以为代码写错,或者这方法不好使。
恍然大悟:原来拿到的是“整个元素”
搞半天,又查些资料,才明白过来。getElementById
它干的活儿,是把那个带有指定 id
的 整个HTML元素 都给你,而不是光把里面的文字抠出来给你。它给你的是一个“对象”,你可以把它想象成一个包含这个元素所有信息和能力的“遥控器”。
最终实现:用“遥控器”操作元素
明白这点,路就好走。我拿到这个“遥控器”(也就是那个元素对象)之后,就可以通过它来访问或者修改这个元素的各种属性。比如,我想改里面的文字,就可以用 .innerHTML
或者 .innerText
这样的属性。
完整的流程就变成:
- 给目标元素一个独特的
id
,例如<p id="my-text">初始文字</p>
。 - 在JavaScript里,先用
let targetElement = *("my-text");
拿到这个元素对象。 - 然后,通过这个
targetElement
对象去操作,比如* = "按钮被点击!文字变!";
。
当我看到点击按钮后,那段文字真的按照我写的代码改变时,那种感觉,真是豁然开朗!妈耶,原来网页交互是这么搞的!就这么一个简单的 getElementById
,一下子就让我感觉打开新世界的大门。虽然现在看这都是基础中的基础,但当初自己一步步摸索出来,那个过程和成就感,现在还记得清清楚楚。这玩意儿,确实是网页开发里最常用、最有用的家伙事儿之一。