使用JavaScript从HTML中的输入标记获取类型

使用JavaScript从HTML中的输入标记获取类型,javascript,html,Javascript,Html,应用程序为打印版本创建临时HTML页面。 我可以禁用页面上的所有内容,这样用户就无法与页面进行交互。但这会使所有内容的颜色都变成灰色,用户在阅读时遇到问题。所以我想让一切都成为只读的 这是我的一段代码 var x = 0; var element; while (x < document.getElementsByTagName("input").length) { element = document.getElementsByTagName("input")[x

应用程序为打印版本创建临时HTML页面。 我可以禁用页面上的所有内容,这样用户就无法与页面进行交互。但这会使所有内容的颜色都变成灰色,用户在阅读时遇到问题。所以我想让一切都成为只读的

这是我的一段代码

var x = 0;        
var element;
while (x < document.getElementsByTagName("input").length) {

  element =  document.getElementsByTagName("input")[x].type
  if (element = "BUTTON") {              
      document.getElementsByTagName("input")[x].onclick = null;
  }
  if (element = "TEXT") {
     document.getElementsByTagName("input")[x].readOnly = true;
  }
  if (element = "CHECKBOX") {
     document.getElementsByTagName("input")[x].disabled = true;
  }
  x++;     
}
var x=0;
var元素;
while(x
如果我删除了if块的复选框,它工作正常。但是,如果我包括复选框条件,它将禁用所有内容(甚至按钮和文本)…当我调试时,我看到所有的if块都在执行。。我不明白为什么


在这方面,有人能帮我吗?

比较使用==而不是=

     if (element == "BUTTON") {  }               

当检查是否相等时,使用===现在您正在使用赋值运算符,=,这意味着每次检查都将返回true。

使用==而不是=in if条件。

如果您只想禁用页面上的所有内容,则更快的方法是将透明DIV放置在z索引值更高的页面内容上

大概是这样的:

Hello: <input type="text"/> <br>
Check this: <input type="checkbox" />

<div style="position: absolute; z-index: 10; top:0; left;0; width:100%; height:100%" />
你好:
选中此项:

演示:

我认为禁用输入的差异样式很有用,因为它为用户提供了视觉反馈

这并不能直接解决你的问题,但它可能是一个很好的选择。您可以对禁用的输入应用样式,以满足您的偏好,可能类似于这样

input[disabled=disabled] {
    background: rgba(255,0,0,0.05);
    border: dashed 1px rgba(255,0,0,0.1);    
    color: black;
    cursor: not-allowed;
}

最后,我找到了解决这个问题的办法


我将所有元素(超链接、下拉列表、文本)转换为标签,并以黑色显示它们。

我尝试了此操作,但未能成功。应用程序在所有页面上都包含打印选项,并且有一个javascript函数用于生成用于打印的html页面(这将作为打印预览服务器),如果我添加这些样式属性,它将不接受它。当我添加样式(esp颜色、光标)时,禁用功能不再有效。这使得用户可以访问该字段。您可以通过javascript动态注入CSS。例如,请参见。不确定为什么添加样式会在没有更多信息的情况下破坏已禁用的功能。我们添加的任何样式都无关紧要。IE(至少IE 8)不允许更改暗黑元素的颜色。