Web开发——D3.js——选择的相关方法

Adding DOM Elements

D3.js选择提供append()和text()方法,以将新元素附加到现有HTML文档中。 本节将详细介绍如何添加DOM元素。

append() 

append()方法将新元素作为当前选择中元素的最后一个子元素追加。这个方法还可以修改元素的样式,其属性,HTML和文本内容。

创建一个网页"select_and_append.html"并添加以下代码:

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <div class = "myclass">
         Hello World!
      </div>
      
      <script>
         d3.select("div.myclass").append("span");
      </script>
   </body>
</html>

这段HTML代码包含了一个简单的网页结构。在<head>标签中,引入了一个JavaScript库D3.js的最小版本(v4)。在<body>标签中,有一个<div>元素,类名为"myclass",其中包含文本"Hello World!"。随后的<script>标签中,使用D3.js选择了class为"myclass"的<div>元素,并添加了一个<span>元素,但是没有给<span>元素添加任何内容。

通过浏览器请求网页,就可以在屏幕上看到输出了Hello World!

这里,我们使用了append()方法在div标签内添加一个新标签span,可以对比上面的代码看看有什么不同。

<div class = "myclass">
   Hello World!<span></span>
</div>

text()

text()方法用于设置所选/附加元素的内容。接下来我们更改上面的示例并添加text()方法,如下所示。

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <div class = "myclass">
         Hello World!
      </div>
      
      <script>
         d3.select("div.myclass").append("span").text("from D3.js");
      </script>
   </body>
</html>

这段HTML代码与之前的代码类似,不同之处在于在<script>标签中使用了D3.js来选择类名为"myclass"的<div>元素,并添加了一个<span>元素,然后用.text()方法为<span>元素添加了文本内容"from D3.js"。这样,通过D3.js操作DOM,将"from D3.js"文本内容添加到了页面中。

这里,上面的脚本执行链接操作。 D3.js采用了一种称为链式语法的技术。通过将方法与句点链接在一起,让我们可以在一行代码中执行多个操作。它快速而简单。 也可以不使用链式语法达到相同的效果,如下所示。

var body = d3.select("div.myclass");
var span = body.append("span");
span.text("from D3.js");

修改元素

D3.js提供了各种方法,html(),attr()和style()来修改所选元素的内容和样式。让我们看看如何使用这些修改方法。

html() 

html()方法用于设置所选/附加元素的html内容。

创建一个网页"select_and_add_html.html"并添加以下代码。

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <div class = "myclass">
         Hello World!
      </div>
      
      <script>
         d3.select(".myclass").html("Hello World! <span>from D3.js</span>");
      </script>
   </body>
</html>

这个HTML文档中包含了一个<div>元素, 类名为"myclass",显示文本"Hello World!"。在<script>标记中,使用D3.js库在网页加载后选中了class为"myclass"的<div>元素,并更新其内容为"Hello World! <span>from D3.js</span>"。在这里,D3.js被用来操作DOM并更新页面内容。

attr() 

attr()方法用于添加或更新所选元素的属性。 创建一个网页"select_and_modify.html"并添加以下代码。

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <div class = "myclass">
         Hello World!
      </div>
      
      <script>
         d3.select(".myclass").attr("style", "color: red");
      </script>
   </body>
</html>

这段代码会通过D3.js将"class=myclass"的<div>元素的文字颜色改变为红色。

style()

style()方法用于设置所选元素的样式属性。 创建一个网页"select_and_style.html"并添加以下代码。

<!DOCTYPE html>
<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <div class = "myclass">
         Hello World!
      </div>
      
      <script>
         d3.select(".myclass").style("color", "red");
      </script>
   </body>
</html>

使用style()方法,同样将<div>元素的文字颜色设置成了红色。

classed()

classed()方法专门用于设置HTML元素的"class"属性。 因为单个HTML元素可以有多个类;

一个元素具有多个类意味着该元素可以同时具有多个不同的类名。当一个元素有多个类时,这些类名会用空格分隔开。这样设计的目的是让开发者可以为同一个元素定义不同的样式或行为,让CSS和JavaScript能够更方便地选择和操作这些元素。

例如,一个元素的class属性可以是这样的:class="button primary large"。这个元素就有了三个类名:button、primary和large。这样,这个元素就可以应用按钮样式、主要样式和大尺寸样式,同时也可以根据这些类名来进行相应的样式设置或JavaScript操作。

在为HTML元素分配类时,要知道如何处理元素的一个或多个类。

  • 添加类:要添加类,必须将分类方法的第二个参数设置为true。 它定义如下:

d3.select(".myclass").classed("myanotherclass", true);
  • 删除类:要删除类,必须将分类方法的第二个参数设置为false。 它定义如下:

d3.select(".myclass").classed("myanotherclass", false);
  • 检查类:要检查是否存在类,只需省略第二个参数并传递要查询的类名。 如果存在则返回true,如果不存在,则返回false。

d3.select(".myclass").classed("myanotherclass");

如果选择中的任何元素具有类,则返回true。 使用d3.select进行单个元素选择。

  • 切换类:将类翻转到相反的状态。如果它已经存在就将其删除,如果它不存在就添加它。

    对于单个元素,代码可以这么写。

var element = d3.select(".myclass")
element.classed("myanotherclass", !oneBar.classed("myanotherclass"));

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值