JavaScript DOM加强(佟刚)

1.JavaS   cript 相对支持好的IDE.Aptana.  
今天还真的头一次使用.原来一直用MyEclipse或Eclipse对 JavaScript 开发,支持的不是很好,有时候很费劲.有了这个大大的提高了效率.界面和原来用的Eclipse都是一样的,所有今天虽然第一次时候,但也不是很别手.很 快就用这个 IDE 写了一个 JavaScript 的 HelloWorld.很好的开始.

2.基础方法的使用:  
获 取元素节点:var bj = document.getElementById("bj");
获取属性节点:var nameNode = bj.getAttributeNode("name");
获取元素节点的 nodeName 属性值:bj.nodeName
获取属性 节点的值:var name = bj.getAttribute("name"); alert(name);
获取元素节点的 nodeValue 属性值, 返回 null:bj.nodeValue

3.练习例子:  
1)点击任何 li 节点, 弹出对应的文本值  
思路:
①获取所有的 li 节点
② 为每个 li 节点添加 onclick 事件
③ 在相应函数中弹出当前节点的文本值
在②和③步中,使用了for循环.
关 键代码:
<script type="text/javascript">  
            window.onload = function(){  
                var pNodes = document.getElementsByTagName("p");  
                // alert(pNodes.length);                
                for (var i = 0; i < pNodes.length; i++) {  
                    pNodes[i].onclick = function(){  
                        //alert("hello...");  
                        alert(this.firstChild.nodeValue);  
                    };  
                }                
                //点击任何 li 节点, 弹出对应的文本值                
                //1. 获取所有的 li 节点  
                var liNodes = document.getElementsByTagName("li");                
                //2. 为每个 li 节点添加 onclick 事件  
                for (var i = 0; i < liNodes.length; i++) {  
                    liNodes[i].onclick = function(){  
                        //3. 在相应函数中弹出当前节点的文本值  
                        alert(this.firstChild.nodeValue);  
                    };  
                }                
            };            
</script>  

2)点击任何 li 节点, 对节点内容进行修改.  
关键代码:  
<script type="text/javascript">  
            window.onload = function(){  
                var cityNode = document.getElementById("city");  
                var brNodes = document.getElementsByTagName("br");  
                var cities = cityNode.childNodes;                 
                for(var i = 0; i < cities.length; i++){  
                    if(cities[i].nodeType == 1){  
                        cities[i].onclick = function(){  
                            var reg = /^/^+|/^+$/gi;  
                            var flag = reg.test(this.firstChild.nodeValue); //代表是否有 "^^"                        
                            if(!flag){  
                                this.firstChild.nodeValue = "^^" + this.firstChild.nodeValue + "^^"; 
                            }else{  
                                this.firstChild.nodeValue = this.firstChild.nodeValue.replace(reg, "");  
                            }                                
                        };  
                    }  
                }  
            };            
</script>  
总 结:
--关于节点的属性: 只读 -- nodeName, nodeType, 可以进行读写 -- nodeValue;
--在判断 中,使用的了正则表达式.
--在利用 childNodes 属性获取所有子节点时, 应注意其中可能包含文本节点

3)创建一个新的节点,并把li节点添加到ul的末尾.  
思路:
① 创建一个新的元素节点: document.createElement()   --创建 li 节点: <li></li>
② 创建一个新的文本节点:document.createTextNode() --创建文本节点: 南京
③为指定的元素节点添加子节点: element.appendChild(childNode) --把 "南京" 节点作为 li 节点的子节点: <li>南京</li>
④把 <li>南京</li> 加入到 ul 节点的末尾
核心 代码:
<script type="text/javascript">            
            window.onload = function(){  
                //创建一个新的元素节点 <li>南京</li>, 将该节点加入到 ul 节点的末尾                
                //1. 创建一个新的元素节点: document.createElement()   --创建 li 节点: <li></li>  
                var newLiNode = document.createElement("li");                
                //2. 创建一个新的文本节点:document.createTextNode() --创建文本节点: 南京  
                var newTextNode = document.createTextNode("南京");                
                //3. 为指定的元素节点添加子节点: element.appendChild(childNode) --把 "南京" 节点作为 li 节点的子节点: <li>南京</li>  
                newLiNode.appendChild(newTextNode);                
                //4. 把 <li>南京</li> 加入到 ul 节点的末尾  
                document.getElementById("city").appendChild(newLiNode);                
            }  
</script>  

4)新建一个 <li>杭州</li> 节点, 将该节点插入到 <li>东京</li> 的前边  
思路:
新建一个 <li>杭州</li> 节点, 将该节点插入到 <li>东京</li> 的后边 
若 <li>东京</li> 节点有下一个兄弟节点, 则 <li>杭州</li> 节点放到 <li>东京</li> 节点有下一个兄弟节点的前边
若 <li>东京</li> 节点没有下一个兄弟节点, 直接放在 <li>东京</li> 节点的父节点的最后
核心代码:
<script type="text/javascript">            
            function insertAfter(newChild, refChild){  
                var parentNode = refChild.parentNode;                
                if(parentNode){  
                    if(refChild.nextSibling){  
                        parentNode.insertBefore(newChild, refChild.nextSibling);  
                    }else{  
                        parentNode.appendChild(newChild);  
                    }  
                }                
            }            
            window.onload = function(){  
                //新建一个 <li>杭州</li> 节点, 将该节点插入到 <li>东京</li> 的前边            
                var liNode = document.createElement("li");  
                var liText = document.createTextNode("杭州");  
                liNode.appendChild(liText);                
                var djElement = document.getElementById("sr");                
                //**insertBefore()  
                //document.getElementById("city").insertBefore(liNode, djElement);                
                //新建一个 <li>杭州</li> 节点, 将该节点插入到 <li>东京</li> 的后边        
                //思路: 若 <li>东京</li> 节点有下一个兄弟节点, 则 <li>杭州</li> 节点放到    <li>东京</li> 节点有下一个兄弟节点的前边  
                //     若 <li>东京</li> 节点没有下一个兄弟节点, 直接放在 <li>东京</li> 节点的父节点的最后  
                insertAfter(liNode, djElement);  
            }  
</script>  

5)替 换节点: 互换 bj 节点和 rl 节点.  
替换中,两个关键方法的使用:
var rl1 = rl.cloneNode(true);//打开节点克隆
document.getElementById("city").replaceChild(rl1, bj);//进行替换.注意顺序,是后面的替换前面的.
替换节点: replaceChild(), 副作用: 可以移动节点.
获取文 本节点, 文本节点一定是一个给定的元素节点的子节点. 而不是给定元素节点的 nodeValue 值

6)选择类型,书写文本,并添加到指定 类型中.  
思路:
①获取 submit 按钮.
②为其添加 onclick 事件
③判断 name="type" 的 radio 是否被选中, 若没有被选中, 给出相应的提示
④若 name="type" 的 radio 是已被选中, 判断 name="name" 的 text 是否输入值, 若没有输入或输入的为空串, 给出相应的提示
⑤创建相应的 li 节点
⑥将新创建的 li 节点添加到指定的 ul 的结尾处

7)用JavaS   cript,实现下拉联动.  
思路:
①为 province 节点添加 onchange 事件.清除上次的 option 节点: 因为 js 的数组时动态变化的, 所以不能从前向后清除子节点
②获取 province 节点的值 proviceValue
③解析 cities.xml 文档, 根据 proviceValue 获取相应的 province 节点
④ 获取 3 中 province 节点的所有 city 子节点,  遍历, 创建对应的

8)用JavaS   cript, 对checkbox进行使用操作.  
包括全选,全不选,反选,提交.
这个练习很全面和实用,对今天学习到知识点都用到了.巩 固和提高了JavaScript的编写能力.
一天很快就过去了,晚上做完明天的预习和今天的总结也要早点睡觉了.明天的JQuery课 程更加精彩
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
【6层】4837.9平米六层框架综合办公楼(含计算书、建筑、结构图纸) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值