0

应用程序为打印版本创建一个临时 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++;     
}

如果我删除复选框的 if 块,它工作正常。但是,如果我包含复选框条件,它将使所有内容都被禁用(甚至按钮和文本)..当我调试时,我看到所有 if 块正在执行..我不明白为什么。

有人可以在这方面帮助我吗?

4

6 回答 6

1

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

于 2013-09-06T17:06:28.457 回答
0

比较使用 == 而不是 =

     if (element == "BUTTON") {  }               
于 2013-09-06T17:06:04.967 回答
0

在 if 条件中使用 == 而不是 =。

于 2013-09-06T17:07:43.477 回答
0

如果您只是想禁用页面上的所有内容- 一种更快的方法是将透明 DIV 放置在页面内容上,并使用更高的 z-index 值。

像这样的东西:

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%" />

演示:http: //jsfiddle.net/j39Au/

于 2013-09-06T17:08:07.463 回答
0

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

这并不能直接解决您的问题,但它可能是一个不错的选择。您可以将样式应用于禁用的输入以适合您的偏好,也许是这样的。

input[disabled=disabled] {
    background: rgba(255,0,0,0.05);
    border: dashed 1px rgba(255,0,0,0.1);    
    color: black;
    cursor: not-allowed;
}
于 2013-09-06T17:21:28.113 回答
0

最后我对这个问题做了一个解决方法。

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

于 2013-09-16T14:14:54.400 回答