- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 Javascript 函数 toUpperCase
与使用 CSS text-transform: uppercase
在性能上有区别吗?
为了清楚起见,让我们以最简单的情况为例:
<h1 id="greetings"></h1>
<script>
var name = "Nour"
document.getElementById("greetings").innerHTML="Hello" + name.toUpperCase();
</script>
而不是:
<script>
var name = "Nour"
document.getElementById("greetings").innerHTML="Hello" + name;
</script>
<style>
#greetings {
text-transform:uppercase
}
</style>
两者在性能上有什么区别?
最佳答案
明显的区别是,当您使用toUpperCase()
时,它是一次性操作,这意味着如果您再次修改文本,它将不会变为大写。但是,如果您添加 text-transform: uppercase;
CSS 规则,即使您更改文本,该元素仍将保持大写。查看两个片段:
toUpperCase
:function upper() {
document.getElementById("text").innerText = document.getElementById("text").innerText.toUpperCase();
}
function change() {
document.getElementById("text").innerText = "This text will be sentence case";
}
<p id="text">This is some text.</p>
<button onclick="upper()">Click me to make upper case</button>
<button onclick="change()">Click me to change the text</button>
text-transform: uppercase;
:function upper() {
document.getElementById("text").style.textTransform = "uppercase";
}
function change() {
document.getElementById("text").innerText = "This text will be upper case";
}
<p id="text">This is some text.</p>
<button onclick="upper()">Click me to make upper case</button>
<button onclick="change()">Click me to change the text</button>
您会在第一个片段中看到,文本在更改后并没有保持大写,但是在第二个片段中,新文本在您不做任何事情的情况下变成了大写,因为规则已经到位。这是两者之间最大的区别 - toUpperCase()
是一次性的,text-transform: uppercase;
持续到你删除它。希望这对您有所帮助!
为了获得这两种方法的不同速度,我在下面的两种方法前后添加了 console.log 语句。由于 Stack Overflow 会显示瞬间的控制台消息,您可以使用这些消息自行确定不同的速度:
toUpperCase
:function upper() {
console.log("Before JS");
document.getElementById("text").innerText = document.getElementById("text").innerText.toUpperCase();
console.log("After JS");
}
function change() {
document.getElementById("text").innerText = "This text will be sentence case";
}
<p id="text">This is some text.</p>
<button onclick="upper()">Click me to make upper case</button>
<button onclick="change()">Click me to change the text</button>
text-transform: uppercase;
:function upper() {
console.log("Before CSS");
document.getElementById("text").style.textTransform = "uppercase";
console.log("After CSS");
}
function change() {
document.getElementById("text").innerText = "This text will be upper case";
}
<p id="text">This is some text.</p>
<button onclick="upper()">Click me to make upper case</button>
<button onclick="change()">Click me to change the text</button>
关于javascript - JavaScript 函数 toUpperCase 与 CSS transform-text :uppercase compare with respect to performance? 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731731/
对于 Dictionary “返回项目的顺序未定义”。 我知道有 SortedDictionary ,但如果我只想要一本字典,按照我放入元素的顺序返回元素,最好的办法是什么? 我在想我应该使用 Lis
为什么 RelativeLayout 不换行内容?如果我删除最后一个与底部父级对齐的 View ,它就可以工作...
我正在研究一些关于 Respect Relational 的内容尽管阅读了所有文档,但最终还是出现了一个问题。我可以对主键列未命名为“id”的记录进行更新吗?例如: 我在主键名称中包含“tb_”前缀的
我正在尝试创建一个布局,其中各种数据由一条线( View )分隔,但该设计要求与该线的顶部和底部间距相等。我正在尝试使用边距来完成此操作,但没有得到预期的结果。基于official documenta
我正在尝试使用 css 在带有 background-image 的 a 元素上插入 Logo 图像。 但是,我无法让 a:before 框遵守 a 的填充。 下面代码片段中的第一个示例使用了 wid
真棒Respect Validation library带有许多内置验证器,如 string()、alpha() 等。我想将自定义验证器添加到库中,例如,我希望能够这样做: Validator::my
我在 Android Studio 中有一个项目,但我似乎无法弄清楚这个 gradle 问题。我的应用程序结构如下: app(模块)依赖于 crashlib(模块),crashlib 依赖于来自我在
122 PG class Student { char grade } 现在,我需要通过解析上面的 XML 来设置上面的 Student 对象的成绩值 XML 中的此 CVF 元素可以有两个值:P
我需要使用 display: table 使内容居中显示 这是我的代码:JSFIDDLE 我需要让“表格”适合所有屏幕。但是如果 centered 不仅仅是屏幕,表格会变得太大并且忘记 height:
好的,到目前为止还没有任何建议,所以可能还没有真正正确地总结; 如果我用 class="container" 绝对定位该部分使用仅适用于 的额外类或 ID , 它把自己定位在它相对定位的祖先 之外
我一直在使用Respect Validation用于表单验证 $app->post('/', function () use ($app) { $validator = v::key('na
我使用 Slim 3 Framework在我的项目中,我有一个包含 3 个输入的表单:'file'、'name'、'firstname'。 假设 $request 有我表单的数据输入,为了获取上传的文
我正在使用 Respect/Validation类,我有自定义规则 CustomRule() 可以正常工作: use Respect\Validation\Validator as v; // ...
我有一个名为 UserDegree 的 mysql 数据库表,当我尝试使用 Doctrine 导入回 PHP 时,它会生成一个模型名称 Userdegree,有没有办法解决这个问题? 我真的找不到任何
我在使用 xsl:apply-templates 时遇到问题。我正在尝试将模板应用于一个特定标签,但我看到了来自其他标签的文本。一个简单的xml文件:
我部署的 pod 正在执行不应中断的工作。 K8s 是否可能正在轮询一个端点关于更新准备情况,或者通知我的 pod 它即将关闭以便它可以按顺序处理事务然后声明自己准备好进行更新? 理想过程: 更新的
我有一个简单的模型,比如资源。而且我的用户少于 20 个,模型管理员用于记录请求。 问题是所有用户都可以看到模型管理站点中的所有记录。 可以将此行为更改为仅显示由同一用户创建的记录吗? 谢谢你的期待。
我想知道是否可以回显一个变量并根据其内容改变值的相应颜色?这不同于为回显值设置固定颜色。 例如: Status DB中的状态内容可以是: “高”- 红色字体, "Med"- 橙色字体, “低”- 蓝
我有多个测试类,每个测试类都有自己的 SetUp() 和 TearDown()。 据我所知,在 RUN_ALL_TEST() 之后运行测试用例的顺序是未知的。 我想在第一次调用 SetUp 之前启动服
在此代码段中,您可以找到带有装饰下划线的 h2 header ,它是使用 :after 伪元素实现的。一切都运行良好,直到我们有一个 float 图像应该出现在前面提到的 h2 的左侧:h2 将正确
我是一名优秀的程序员,十分优秀!