当前位置: 首页 > 知识库问答 >
问题:

Javascript类名更改不起作用

凌运恒
2023-03-14

我有一个小的测试页面设置来测试我有的一个sprite表。sprites.css中的每个sprite如下所示...

.a320_0 {
   top: 0px;
   left: 0px;
   width: 60px;
   height: 64px;
   background: url("images/sprites.png") no-repeat -787px -398px;
}

我的页面是这样的...

null

var i = 0

function imageChange() {
  setTimeout(function() {
    var hdg = i * 15;
    document.getElementById('image').className = "a320_" + hdg;
    i++;
    if (i < 24) {
      imageChange();
    }
  }, 1000)
}
imageChange()
<div id='imageContainer'>
  <div id='image'></div>
</div>

null

在循环过程中,我记录了类名,可以看到它的变化,并且这些名称对应于我的样式表中存在的类。sprites.csssprites.png都在images文件夹中,并且images文件夹与我的页面位于同一目录中。

如果我只是从我的样式表中复制一个规则并将其直接放到我的页面上,并将名称替换为#image以进行测试,我就可以显示这个特定的图像,这样我的sprite坐标就很好了,但是如果我在实际的css文件上做同样的事情,我就不会得到同样的结果,这导致我认为我的样式表可能没有加载。即使我只是将样式直接放入我的文档中,并尝试使用.classname=,它仍然不起作用。我最近有这个工作,但它似乎不再工作了。我有点迷路了...

共有1个答案

子车劲
2023-03-14

它应该是document.getElementById(“image”).classlist.add(“a320_”+hdg);

null

var i = 0;

function imageChange() {
  setTimeout(function() {
    var hdg = i * 15;
    document.getElementById("image").classList.add("a320_" + hdg);
    i++;
    if (i < 24) {
      imageChange();
    }
  }, 1000);
}

imageChange();
.a320_0 {
  top: 0px;
  left: 0px;
  width: 60px;
  height: 64px;
  background: url("https://source.unsplash.com/random") no-repeat -787px -398px;
}
<div id='imageContainer'>
  <div id='image'></div>
</div>
 类似资料:
  • 我正在尝试以编程方式更改页面。这第一行代码正在工作,但我不需要它延迟,所以我尝试了第二行,但它不起作用。我错过了什么? 工作(但我不想延迟): 不工作: 我在<代码>中调用它

  • 我有一个音乐播放器活动来控制歌曲的播放。我已经阅读了有关管理音频焦点的文档,并在

  • 我最近从我的windows机器换成了iMac,我把我的angular项目复制到Mac上,并按照所有的安装说明操作,但现在当我键入NPM start时,项目开始了,但当我保存文件时并没有更新。 我已经卸载了angular-cli并将其安装到最新版本 角度-CLI:1 . 0 . 0-β21 节点:6.9.1 操作系统:达尔文x64 我也安装了守夜人,但没有成功。 我杀ng服的时候,网站直接给出错误

  • 我正在尝试更改一个JLabel的图标(背景),但我有一个问题,图标没有更新。每当我尝试更改main方法中的JLabel时,编译器首先抱怨变量不存在,所以我将它从JFrame初始化方法移到了类级变量。在此之后,Eclipse抱怨我试图从静态上下文引用一个非静态方法,因此我将设置为静态的。这使得程序可以编译,但是图标并没有在任何时候改变。 由于很难理解我的问题,这里提供了一个Eclipse工作区的下载

  • 我在xhtml上有以下组件: 这些值正确来自cCRX1Controller类。然而,当我选择一个选项时,我试图显示该值。#{digrcontroller.testing()}如下所示: 我做错了什么?我检查了这个问题,但不知道问题出在哪里。

  • 我正在尝试使用LayoutTransition动画,但它们不起作用。 我设置 在我的activity布局中的父级LinearLayout中。然后,在选中或未选中另一个复选框时,对包含一些复选框的子LinearLayout执行setVisibility(View.Visible)或setVisibility(View.Gone)。可见性更改不是动画的。父级LinearLayout中有一个Scroll