通过简单搜索例子复习DOM元素相关操作

HTML:

<div id="box">
<input type="text" id="search" value="">
<input type="button" id="btn" value="搜索">
</div>

CSS:

/*使水平居中*/
body{
position:relative;
}
#box{
position: absolute;
left: 50%;
margin-left: -125px;
}

JS:

function my$(id)
{
return document.getElementById(id);
}
var Arr=["小青蛙","小青菜","小老虎","小老鼠","大笨蛋","大笨猪","你好"];

my$("search").onkeyup=function()//键盘按键被松开时执行
{
var tempArr=[];
if(my$("dv"))
my$("box").removeChild(my$("dv"));

for(var i=0;i<Arr.length;i++)//遍历数组,查找匹配的字符串放入临时数组
{
if(Arr[i].indexOf(this.value)==0)
tempArr.push(Arr[i]);
}
console.log(tempArr);

if(tempArr.length==0||this.value.length==0)//如果搜索框里为空或者临时数组为空则删除div,且不执行后面代码
{
if(my$("dv"))
my$("box").removeChild(my$("dv"));
return ;
}
var divObj=document.createElement("div");
divObj.style.border="1px solid blue";
divObj.style.width="171px";
//divObj.style.height="100px";
divObj.id="dv"
my$("box").appendChild(divObj);
for(var j=0;j<tempArr.length;j++)//遍历临时数组创建p标签放入div
{
var pObj=document.createElement("p");
divObj.appendChild(pObj);
pObj.textContent=tempArr[j];//设置p中内容
pObj.style.margin="0";//设置p的样式
pObj.style.padding="0";
pObj.style.cursor="pointer";
pObj.style.marginTop="5px";
pObj.style.marginLeft="5px";

pObj.onmouseover=function()//设置高亮显示
{
this.style.backgroundColor="blue";

};
pObj.onmouseout=function()
{
this.style.backgroundColor="";
}

}

}

基础知识点:

1.创建元素

document.createElement(element_str)

2.将创建的元素追加到父元素

appendChild(element)

3.移除元素

removeChild(element)

在本例中用了两次document.createElement方法,两次appendChild,两次removeChild

在搜索框中输入的文本,在数组中能找到匹配的字符串,则在搜索框下面创建div元素展示搜索结果,追加到父元素box中,遍历结果数组,创建p元素,追加到新创建的div中。

如果搜索框文本为空或者结果数组为空,新创的div又存在,则需要移除,避免出现如图1情况,因为“ ”会匹配所有结果。

在键盘按键被松开时,需要检测搜索结果的div是否存在,存在则删除,避免如图2所示情况,先输入“小青蛙”,显示一条,再删除“蛙”,在第一条基础上又多了两条,两次结果同时展示。

原文地址:https://www.cnblogs.com/front-end0829/p/10330712.html

时间: 2024-10-11 08:41:16

通过简单搜索例子复习DOM元素相关操作的相关文章

JavaScript中的DOM及相关操作

一.什么是DOM JavaScript由ECMAScript.DOM和BOM三部分组成,其中DOM代表描述网页内容的方法和接口,即文档对象模型(Document Object Model).在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM,而树形结构就是我们常说的DOM树. 维基百科中介绍DOM更为准确:DOM是一种跨平台和语言非依赖性的应用程序编程接口,即处理现在的HTML,XHTML或XML文档作为树结构,其中每个节点是一个对象,每个节点表示

Dom元素的操作

getElementById(): 获取有指定惟一ID属性值文档中的元素 getElementsByName(name): 返回的是数组 getElementsByTagName(): 返回具有指定标签名的元素子元素集合 getAttribute(): 返回指定属性名的属性值 ? 1 document.getElementsByTagName("a")[0].getAttribute("target"); setAttribute(): 添加指定的属性,并为其赋指定

JavaScript学习第一天(对html元素相关操作)

1.JavaScript:写入 HTML 输出 可以直接将html代码写入JS中 <script> document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); </script> 2.JavaScript:对事件作出反应 alert() 函数在 JavaScript 中并

JQuery处理DOM元素-属性操作

1 //操作元素的属性: 2 $('*').each(function(n){ 3 this.id = this.tagName + n; 4 }) 5 6 //获取属性值: 7 $('').attr(''); 8 9 //设置属性值: 10 //为一个属性设置值 11 $('*').attr('title', function(index, previousValue){ 12 return previousValue + ' I am element ' + index + ' and my

DOM节点相关操作(兼容)

//获取元素子节点 function getChild(parent) { var childs = parent.childNodes, result = []; for (var i = 0; cl = childs.length, i < cl; i++) { if(childs[i].nodeType == 1) { result.push(childs[i]) } }; return result; };

关于c#数据库的简单应用-datagriview连接数据库及更相关操作

先介绍下关于数据库的连接: 我们首先通过connection对象对数据连接: string str1 = Application.StartupPath; string str = "provider=Microsoft.Jet.OLEDB.4.0; data Source="[email protected]"\telephone.mdb; Persist Security Info=False"; OleDbConnection conn = new OleDb

返本求源——DOM元素的特性与属性

抛砖引玉 很多前端类库(比如dojo与JQuery)在涉及dom操作时都会见到两个模块:attr.prop.某天代码复查时,见到一段为某节点设置文本的代码: attr.set(node, 'innerText', 'Hello World!') 这段代码执行后并未生效,虽说innerText不是标准属性,尚未被ff支持,可用的是chrome,这个属性是被支持的.既然显示的文本没变,那就查看一下元素吧. innerText被添加到了html标签上,而换成prop模块后,成功的为节点替换文本. 以上

《ElasticSearch6.x实战教程》之简单搜索、Java客户端(上)

第五章-简单搜索 众里寻他千百度 搜索是ES的核心,本节讲解一些基本的简单的搜索. 掌握ES搜索查询的RESTful的API犹如掌握关系型数据库的SQL语句,尽管Java客户端API为我们不需要我们去实际编写RESTful的API,但在生产环境中,免不了在线上执行查询语句做数据统计供产品经理等使用. 数据准备 首先创建一个名为user的Index,并创建一个student的Type,Mapping映射一共有如下几个字段: 创建名为user的Index PUT http://localhost:9

DOM元素的特性和属性

首先来看一下他们的概念: 特性(Attribute):是DOM元素在文档中作为html标签拥有的属性: 属性(Property):是DOM元素在js中作为对象拥有的属性: 首先来了解一下DOM的五个标准特性(id.title.lang.dir.class) 对于标准特性来说,Attribute和Property是同步的,是会自动更新的, 对于自定义的特性来说,他们是不同步的(自定义的特性不会自动 添加到property) HTML5规范对自定义特性做了增强,只要自定义特性以"data-attrN