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

打字稿中的 Javascript

1 Win server 2012 R2 文件服务器--权限设置

vue 公共样式处理_全局styl文件

css技巧总结