DOM

一、节点层次

1.Node类型

最常用的节点类型有:

节点类型对应值
Node.ELEMENT_NODE1
Node.TEXT_NODE3
        var text = document.getElementById("text");
        var content = text.childNodes[0];

        console.log(text.nodeType == 1);  // true
        console.log(content.nodeType == 3);  // true

可以通过将节点的nodeType属性与类型值比较判断节点类型。

1.nodeName、nodeValue

对于元素节点,属性nodeName 返回标签名,nodeValue返回null

对于文本节点,属性nodeName 返回 "#text",属性nodeValue返回文本内容

        console.log(text.nodeName);  // P
        console.log(text.nodeValue);  // null
        console.log(content.nodeName); // #text
        console.log(content.nodeValue);  // hello world!

2.节点间关系

childNodes:返回节点子节点集合的一个类数组对象,是基于DOM结构执行动态查询的结果,可以使用Array的原型方法slice转换为数组区别如下:

        var bodyNode = document.getElementById("box");
//        childNodes 是类数组对象,DOM动态查询结果
        var childList = bodyNode.childNodes;
//        第一次DOM查询结果的快照
        var childArr = Array.prototype.slice.call(childList, 0);

此后对于该节点的增删子节点操作会影响到 bodyNode, 却不会影响 childArr

如果考虑到IE兼容性,可手动枚举nodeList的元素,将其添加到新数组来实现转换

parentNode:返回节点的父节点

nextSibling、previousSibling:返回节点的上/下一个同胞节点

3.操作节点

appendChild(node):在子节点最后添加节点node

insertBefore(node, referenceNode):在参考子节点referenceNode前添加节点node

replaceChild(node, replaceNode):替换子节点 replaceNode 为节点node

注:以上方法如果node为文档中存在的节点,则这些方法相当于移动node至新位置

removeChild(node):移除节点node

cloneNode(boolean):拷贝节点,参数为true则为深拷贝,即拷贝以这个节点为初始节点的节点树,若参数为false,则只拷贝这层节点。这个方法只会拷贝节点的特性,并不会拷贝js属性(如某个节点的事件方法)

2.Document类型

document常用属性:

document.documentElement:<html>的引用

document.body:<body>的引用

document.title:文档标题

document.URL:文档完整URL

document.domain:域名

document.referrer:来源页面的URL

查找元素的方法:

getElementById(id)

getElementsByTagName(tag)

getElementsByName(name)

3.Element类型

1.HTML元素特性

id、title、className:可以获取对应的属性,且可以直接赋值

2.属性操作

getAttribute(attr):获取属性

setAttribute(attr, value):设置属性

removeAttribute(attr):移除属性

3.attributes

可以得到元素的属性集合,也是类数组对象,通常用来作为遍历属性的一种方式

4.创建元素

document.createElement(ele):创建元素,参数可以是标签名,也可以是一个完整的元素(包含属性等)

4.Text类型

创建文本节点:document.createTextNode(text)

基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值