当前位置: 首页 > 面试题库 >

使用Java脚本更改CSS值

时经纬
2023-03-14
问题内容

使用javascript设置内联CSS值很容易。如果我想更改宽度,并且我有这样的html:

<div style="width: 10px"></div>

我需要做的是:

document.getElementById('id').style.width = value;

它将更改内联样式表的值。通常这不是问题,因为内联样式会覆盖样式表。例:

<style>
   #tId {
      width: 50%;
   }
</style>

<div id="tId"></div>

使用此Javascript:

document.getElementById('tId').style.width = "30%";

我得到以下内容:

<style>
   #tId {
      width: 50%;
   }
</style>

<div id="tId" style="width: 30%";></div>

这是一个问题,因为当我有以下条件时,不仅要更改内联值,而且要在设置宽度之前先查找宽度:

<div id="tId"></div>

返回的值为Null,因此,如果我有Javascript需要知道某种东西的宽度以执行某些逻辑(我将宽度增加1%,而不是特定值),则当我期望字符串“
50%”时返回Null ”确实没有用。

所以我的问题是:我的CSS样式中的值不是内联的,如何获取这些值?给定ID,如何修改样式而不是内联值?


问题答案:

好的,这听起来好像您想更改全局CSS,以便可以有效地一次更改石化样式的所有元素。我最近从Shawn
Olson的教程中
学会了如何自己做。您可以在此处直接引用他的代码。

这是摘要:

您可以通过检索样式表document.styleSheets。实际上,这将返回页面中所有样式表的数组,但是您可以通过document.styleSheets[styleIndex].href属性来确定正在使用哪个样式表。找到要编辑的样式表后,您需要获取规则数组。这在IE中称为“规则”,在大多数其他浏览器中称为“
cssRules”。通过属性可以知道您所使用的CSSRule的方式selectorText。工作代码如下所示:

var cssRuleCode = document.all ? 'rules' : 'cssRules'; //account for IE and FF
var rule = document.styleSheets[styleIndex][cssRuleCode][ruleIndex];
var selector = rule.selectorText;  //maybe '#tId'
var value = rule.value;            //both selectorText and value are settable.

让我知道这对您的工作原理,如果发现任何错误,请发表评论。



 类似资料:
  • 问题内容: 我正在尝试制作一个将用作荧光笔的javascript小书签,当按小书签时,将网页上所选文本的背景更改为黄色。 我正在使用以下代码来获取选定的文本,并且工作正常,返回正确的字符串 } 但是,当我创建了一个类似的函数来使用jQuery更改所选文本的CSS时,它不起作用: } 有任何想法吗? 问题答案: 最简单的方法是使用,该命令具有在所有现代浏览器中更改背景颜色的命令。 以下应该在任何选择

  • 问题内容: 是否可以动态更改CSS规则集(例如,某些JS,当用户单击窗口小部件时,它将更改CSS规则集) 这个特定的CSS规则集应用于页面上的许多元素(通过类选择器),我想在用户单击窗口小部件时对其进行修改,以使具有 类的 所有元素都发生变化。 问题答案: 您可以,但是相当麻烦。关于如何执行此操作的最佳参考是以下文章:带有Javascript的Totally PwnCSSWeb存档链接。 我设法使

  • 问题内容: 我正在尝试设置主体的背景图像,但是仅在使用class的地方设置。HTML如下: 基本上,我想强制页面使用以下CSS代替: 我正在尝试使用Greasemonkey这样做,如果有任何不同。有人知道我该怎么做吗?我从以下内容开始,但是运气还不太好: 问题答案: 为此,只需使用CSS级联。使用将样式表添加到页面。 注意: 我们使用该标志来覆盖某些潜在的冲突。 使用 (或使用手写笔,请参见下文)

  • 问题内容: 我正在尝试设置回合部署脚本。我在使用远程登录时遇到了一些麻烦。在远程服务器上创建数据库时,我们需要使用sql帐户(而不是计算机或域,这是针对Server 2008 R2 SP1上的MSSQL 2008R2)登录。有没有办法为回旋连接和运行脚本提供不同的凭据,因为我在文档中没有看到它?谢谢。 问题答案: 如果指定连接字符串而不是服务器名称和数据库名称,则还可以设置凭据。 来自:https

  • 我试图将一个非常小的项目(可以通过拖放重新排列的数据列表)从通常的PHP、mysqli和ajax“转换”为使用MeekroDB。 它以其原始形式运行良好(这是Ajax使用的小型PHP文件): 但现在我正在尝试使用Meekrodb时却什么也不做: JavaScript/jQuery脚本不变。当然,我已经更新了列表最初是如何从数据库中提取并在站点上显示的,这就很好地工作了。我也仍然可以拖动东西,但它从

  • 问题内容: 假设我在SQL Server Management Studio中为某些表添加了新列。当我按保存时,有什么方法可以获取执行的更改脚本? 我要实现的是将相同的更改应用于其他数据库(出于调试目的,我们为每个开发人员都有一个单独的数据库)。 问题答案: 我假设您在MS SSMS中使用表设计器。 在设计器中进行更改,然后在点击之前,进入菜单并选择。