在这篇文章中,我们将为您详细介绍javascript–使用intro.js突出显示一个新的dom元素的内容,并且讨论关于js显示内容的相关问题。此外,我们还会涉及一些关于JavascriptDom元素
在这篇文章中,我们将为您详细介绍javascript – 使用intro.js突出显示一个新的dom元素的内容,并且讨论关于js显示内容的相关问题。此外,我们还会涉及一些关于Javascript Dom元素、javascript – DOM元素太多、javascript – jquery以编程方式单击新的dom元素、javascript – jstree:创建一个新的子节点的知识,以帮助您更全面地了解这个主题。
本文目录一览:- javascript – 使用intro.js突出显示一个新的dom元素(js显示内容)
- Javascript Dom元素
- javascript – DOM元素太多
- javascript – jquery以编程方式单击新的dom元素
- javascript – jstree:创建一个新的子节点
javascript – 使用intro.js突出显示一个新的dom元素(js显示内容)
我的应用程序中有一个包含行和列的表.右键单击一行会显示一个小的“选项”div,用户可以从中选择在当前行的上方/下方添加新行.当我开始巡演时,我会突出显示第一行.由于我正在进行互动游览,因此我允许用户添加新行.我的问题是 – 如何在同一步骤中突出显示新添加的行以及所选行?一系列步骤应该是这样的: –
第1步:(突出显示)
第2步: – 突出显示一行.如果用户添加新行(通过右键单击当前行并选择“在上方/下方添加行”),也要突出显示新行.
第3步: – (突出显示)
解决方法
添加行时,必须调用introJs().refresh().
此外,您必须使用tbody来包装要突出显示的行.
Javascript Dom元素
1.Dom元素的获取
document.getElementById():通过id获取一个Dom元素
document.getElementsByClassName():通过class名字获取一个或多个Dom元素(伪数组)
document.getElementsByTagName():通过标签名字获取一个或多个Dom元素(伪数组)
document.querySelector():获取指定 CSS 选择器的一个元素
document.querySelectorAll():获取指定 CSS 选择器的多个元素(伪数组)
document.getElementsByTagName()和document.getElementsByClassName()获取到的都是动态列表
document.querySelectorAll()获取到的是静态列表,Dom结构发生变化要重新获取,不然会出问题
@H_301_16@<!DOCTYPE html> <html> <head> <Meta charset="UTF-8"> <title>Test</title> </head> <style> *{padding: 0;margin: 0;} </style> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </body> </html> <script> // 静态列表 var liNodes = document.querySelectorAll('li') console.log(liNodes.length) // 4 // 动态添加li标签 document.querySelector('ul').innerHTML += "<li>5</li>" console.log(liNodes.length) // 4 </script>2.Dom元素节点类型
Dom节点类型分3类:元素节点,属性节点,文本节点
每种节点都有3种属性 nodeName,nodeType,nodeValue
3.获取Dom元素的子元素,父元素,兄弟元素
- 通过children属性可以获取当前Dom元素的子元素
- 获取当前元素的父元素
parentElement/parentNode这两个属性都可以
- 获取当前元素的兄弟元素
prevIoUsElementSbiling属性:上一个兄弟元素
nextElementSbiling属性:下一个兄弟元素
注意:
children与childNodes,前者只包含元素节点,而后者为元素节点+文本节点(回车换行也算是文本节点)
而prevIoUsElementSibling与prevIoUsSibling,nextElementSibling与nextSibling也一个道理
firstChild和lastChild:firstChild等价于childNodes[0],lastChild相当于childNodes的最后一个元素
4.DOM元素的添加与移除
- 添加子元素
appendChild():将目标元素作为子元素添加到当前元素的最后面
insertBefore():将目标元素作为子元素添加到当前元素中,位置可以自由选择
运行结果
@H_301_16@<ul> <li>1</li> <li>life</li> <li id="test">2</li> <li>3</li> <li>4</li> </ul>- 删除子元素和替换子元素
removeChild():删除子元素
replaceChild():替换子元素
语法:parent.removeChild(child)
语法:parent.removeChild(替换的元素,被替换的元素)
运行结果:
@H_301_16@<ul> <li>1</li> <li>replace li tag</li> </ul>javascript – DOM元素太多
我正在构建一个单页webapp,它开始变得非常大.应用程序有几个组件,每个组件都经过精心设计.平均而言,该应用的DOM元素数量为1200.我的YSlow扫描警告我这太多了,我应该有不超过700个DOM元素.
我的标记通常非常严格和高效,我怀疑我能够修剪得多.我倾向于使用大量的DOM元素来使样式完全正确并跨浏览器工作.
如何大幅减少DOM元素的数量?
我是否必须按需加载更多内容(ajax)而不是全部加载页面?
大量DOM元素对性能有很大影响吗?
我很想听听人们对此的体验以及您可能拥有的任何解决方案……
减少元素数量的唯一方法是简化页面.
javascript – jquery以编程方式单击新的dom元素
我试图在jquery中做一些棘手的事情(至少对我来说).我有一个绑定到名为add_course的函数的复选框,如下所示:
function add_course(){
var id = $(this).attr('id');
if ($(this).is(':checked')){
if($('#courseInput').val().search(id) < 0){
$('#CourseSummary').append('<span id="cn'+id+'"><a href="#"id="'+id+'">X</a> '+$('#course'+id+' a').html()+'<br/></span>');
$('#courseInput').val(function(index,value){
return value+ id +',1;';
});
addTotal($('#price'+id).text());
}
imageSync();
}else{
//This is where my question refers to.
$('a#'+id+'.courseDel').click();
}
}
当有人选中该复选框时,会在页面中添加包含一些数据和链接的范围.新链接连接到不同的功能
$('.courseDel').live('click', del_course);
del_course做了很多东西,就像add_course一样.
正如您在add_course函数中看到的那样.我检查复选框是否已经过检查,只检查过是否存在.
这是del_course:
function del_course(){
var id = $(this).attr('id');
$('#cn'+id).remove();
$('#courseInput').val(function(index,value){
return value.replace(id+',1;',"");
});
subtractTotal($('#price'+id).text());
imageSync();
}
我想让add_course函数的else部分触发del_course,以便在选中复选框时添加相应的链接.这不起作用.我可能过于复杂了.
这是复选框的html(其中一个示例):
<input type="checkBox"name="courseAdd" id="204"/>
这是当有人点击复选框时添加的链接的html:
<span id="cn204"><a href="#"id="204">X</a> Course Title<br/></span>
有人点击链接时效果很好,但是我如何以编程方式触发它?
解决方法:
由于您拥有所创建元素的ID,因此只需引用ID并使用trigger()
方法:
$('#'+id).trigger('click');
此外,只是一个数字的ID不正确:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters, digits ([0-9]), hyphens (“-“),
underscores (“_”), colons (“:”), and periods (“.”).
javascript – jstree:创建一个新的子节点
在发布之前我已经检查了stackoverflow上的其他问题.一个是这样的:
creating a new node in jstree
但不知何故,我无法让它发挥作用.
我正在通过ajax获取子节点的详细信息.单击某个节点时,它将触发ajax请求并获取子节点详细信息.我想将这些细节附加到jstree中的父(单击)节点.
这是jsfiddle演示(没有ajax):https://jsfiddle.net/8wyqd9om/
你能帮我解决这个问题吗?
HTML:
<div id='cat_tree'>
<ul>
<li id="1">First
<ul>
<li id="2">First</li>
<li id="3">First</li>
</ul>
</li>
<li id="4">First</li>
<li id="5">First</li>
<li id="6">First</li>
</ul>
</div>
JS:
$(function () {
$('#cat_tree').jstree({"core": {
"themes":{
"icons":false
}
}});
var data = [
{ "id" : "7", "parent" : "#4", "text" : "second" },
{ "id" : "8", "parent" : "#4", "text" : "second" },
];
$('#click').click(function() {
$('#cat_tree').jstree().create_node($('#4'), data, 'last', function(){
alert("done");
}, true);
});
});
解决方法:
请检查以下代码
$(function() {
var data = [{
"id": "p1",
"parent": "#",
"text": "Parent-1"
}, {
"id": "p2",
"parent": "#",
"text": "Parent-2"
}, {
"id": "c1",
"parent": "p2",
"text": "Child 1"
}, {
"id": "c2",
"parent": "p2",
"text": "Child 2"
}, ];
$("#jstree").jstree({
"core": {
"check_callback": true,
"data": data
}
}).on('create_node.jstree', function(e, data) {
console.log('saved');
});
$('#btnCreate').click(function() {
$('#jstree').jstree().create_node('#', {
"id": "p3",
"text": "Parent-3"
}, "last", function() {
alert("Parent created");
});
$('#jstree').jstree().create_node('p2', {
"id": "c3",
"text": "Child 3"
}, "last", function() {
alert("Child created");
});
});
});
演示:https://jsfiddle.net/m24fvh39/1/
我们今天的关于javascript – 使用intro.js突出显示一个新的dom元素和js显示内容的分享就到这里,谢谢您的阅读,如果想了解更多关于Javascript Dom元素、javascript – DOM元素太多、javascript – jquery以编程方式单击新的dom元素、javascript – jstree:创建一个新的子节点的相关信息,可以在本站进行搜索。
本文标签: