javascript中,设置width时,style="width:100px" 和width
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中,设置width时,style="width:100px" 和width相关的知识,希望对你有一定的参考价值。
javascript中,设置width时,style="width:100px" 和width=100 有什么区别,怎么用?
width属性不是每个元素都支持的,一般就table和body支持。
关于width属性参考:http://www.w3school.com.cn/tags/att_table_width.asp
style="width: 100px"是CSS样式,CSS样式有多种方式设置,直接写成这个样子属于内联CSS,也可以把这个提出来单独放到<style>里,比如
<html><head>
<style>
.mydiv width: 100px;
div background-color: #ddd; margin: 10px;
</style>
<meta charset="utf-8">
</head>
<body>
<div class="mydiv">测试内部样式,即放在head里的style标签里的样式</div>
<div style="width:100px">测试内联样式,即放在元素的style属性中的样式</div>
<div width="100">测试元素属性,无效</div>
</body>
</html>
此外,还有外部样式,就是可以把style标签里的内容放到xx.css文件,然后head里增加一条
<link rel="stylesheet" type="text/css" href="xx.css">
就可以引用外部样式。
用内部和外部样式的好处在于可以批量设置样式,就是给同样的一些元素设置相同的样式,只要改一个地方,这些元素的样式一起改动。
内联CSS样式只能针对单个元素做样式设置。
关于样式具体参考:http://www.w3school.com.cn/css/css_intro.asp
参考技术A 通过获取image对象后,直接设置属性image.style.width=100,没有生效是因为 style.width 所接收的为字符串,image.width=100,这种写法是可以的,因为 width 本身就是 number 类型的。然后看到一个关于 style.width 的设值的说法,如下
IE
id.style.width = "100"; //只带数值,不会出错
id.style.width = "100px"; //带数值和单位,不会出错
id.style.width = "100px;"; //带数值、单位和分号,会出错
FF
id.style.width = "100"; //只带数值,会出错
id.style.width = "100px"; //带数值和单位,不会出错
id.style.width = "100px;"; //带数值、单位和分号,不会出错;
根据以上的说法,所以平时写的时候,最好是使用“数值+单位”的这种写法,以免出现不可预料的错误。 参考技术B <div width="100"></div>
<div style="width: 100px"></div>
就这个区别 参考技术C 没区别,规范问题追问
可是有的时候不知道该用哪个,还得试
追答style使用的css样式,有的样式只有css有
打字稿中的 Javascript
【中文标题】打字稿中的 Javascript【英文标题】:Javascript in Typescript 【发布时间】:2021-07-02 13:19:36 【问题描述】:实际上每个 Javascript 代码在打字稿中也应该是有效的,但是当我尝试运行下面的代码时,我得到了下面的错误。有人可以用打字稿写这个 javascript 代码吗?
Error: 20: 9 - error TS2531: Object is possibly 'zero'.20 document.getElementById ("navbar"). Style.top = "0";
组件.ts
var prevScrollpos = window.pageYOffset;
window.onscroll = function()
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos)
document.getElementById("navbar").style.top = "0";
else
document.getElementById("navbar").style.top = "-50px";
prevScrollpos = currentScrollPos;
html:
<nav class="navbar navbar-expand-lg navbar-dark pb_navbar pb_scrolled-light w3-animate-right navlist-right " id="navbar">
<div class="container">
<a class="navbar-brand" href="index.html"></a>
<button class="navbar-toggler d-block d-sm-none" (click)="toggleNavbar()" type="button" data-toggle="collapse" data-target="#probootstrap-navbar" aria-controls="probootstrap-navbar" aria-expanded="true" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse " [ngClass]=" 'show': navbarOpen " id="onright">
<ul class="navbar-nav ml-auto">
<li class="nav-item"><a class="nav-link" href="#" (click)= " NavBar()" >Home </a></li>
<li class="nav-item"><a class="nav-link" href="#service" (click)= " NavBar()">Service</a></li>
<li class="nav-item"><a class="nav-link" href="#blog" (click)= " NavBar()">Blog</a></li>
<li class="nav-item"><a class="nav-link" href="#contact" (click)= " NavBar()">Contact</a></li>
</ul>
</div>
</div>
</nav>
【问题讨论】:
您可能已将 tsconfig 设置为严格。您可以将其设置为非常宽松,让所有错误都过去。但也许如果你说document.getElementById("navbar")!.style.top = "0";
(即在那里放一个感叹号)它可能会起作用,虽然我还没有尝试过
您可以执行document.getElementById("navbar")?.style.top
或执行var navbar = document.getElementById("navbar")
之类的操作,然后基于navbar
执行if 语句。类似if (navbar != null) navbar.style.top = 0;
【参考方案1】:
该错误告诉您您可能有一个运行时错误,因为document.getElementById("navbar")
可能会返回 null,因此如果元素不存在,document.getElementById("navbar").style.top
可能会抛出错误。
如果您对它没问题,您可以添加内联异常或将您的 typescript 配置切换到非严格模式。
链接:strict
【讨论】:
【参考方案2】:为此尝试包装 document.getElementById("导航栏") 有了它的类型然后你也可以使用安全导航器是什么?仅在较早的对象不为空时导航
【讨论】:
【参考方案3】:解决方案:
component.ts:
import Inject from '@angular/core';
import DOCUMENT from '@angular/common';
constructor(@Inject(DOCUMENT) document)
prevScrollpos = window.pageYOffset;
@HostListener('window:scroll', ['$event'])
onWindowScroll()
var currentScrollPos = window.pageYOffset;
if (this.prevScrollpos > currentScrollPos)
window.document.getElementById('navbar')!.style.top = "0";
else if (this.prevScrollpos < currentScrollPos)
window.document.getElementById('navbar')!.style.top = "-50px";
this.prevScrollpos = currentScrollPos;
tsconfig.json
将此行添加到 compilerOptions:
"noImplicitAny": false,
【讨论】:
以上是关于javascript中,设置width时,style="width:100px" 和width的主要内容,如果未能解决你的问题,请参考以下文章
VUE-013-为elementUI 设置 tootip 宽度
JavaScript DOM操作案例点击按钮通过类样式的方式显示跟隐藏div