如何使用Javascript禁用和启用HTML表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Javascript禁用和启用HTML表?相关的知识,希望对你有一定的参考价值。

我想知道如何通过单击html按钮使用javascript禁用和启用HTML表格上的突出显示。

这是我的代码:

tabletest.html

<html>
<head>
<script type="text/javascript">
 function disableTable() {
  document.getElementbyId('tblTest').disabled = true;
 }

 function enableTable() {
  document.getElementbyId('tblTest').disabled = false;
 }
</script>

<style type="text/css">
 table#tblTest {
  width: 100%;
  margin-top: 10px;
  font-family: verdana,arial,sans-serif;
  font-size:12px;
  color:#333333;
  border-width: 1px;
  border-color: #666666;
  border-collapse: collapse;
 }

 table#tblTest tr.highlight td {
  background-color: #8888ff;
 }

 table#tblTest tr.normal {
  background-color: #ffffff;
 }

 table#tblTest th {
  white-space: nowrap; 
  border-width: 1px;
  padding: 8px;
  border-style: solid;
  border-color: #666666;
  background-color: #dedede;
 }

 table#tblTest td {
  border-width: 1px;
  padding: 8px;
  border-style: solid;
  border-color: #666666;
  background-color: #ffffff;
 }
</style>
</head>

<body>
 <table id="tblTest">
  <thead>
   <tr>
    <th>Name</th>
    <th>Address</th>
   </tr>
</thead>
<tbody>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" >
        <td>Tom</td>    
        <td>UK </td>
    </tr>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" >
        <td>Hans</td>   
        <td>Germany</td>
    </tr>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" > 
        <td>Henrik</td> 
        <td>Denmark</td>
    </tr>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" >
        <td>Lionel</td> 
        <td>Italy</td>
    </tr>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" >
        <td>Ricardo</td>    
        <td>Brazil</td>
    </tr>
    <tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" >
        <td>Cristiano</td>  
        <td>Portugal</td>
    </tr>
</tbody>
</table>
 <input type="button" onclick="disableTable();" value="Disable" />
 <input type="button" onclick="enableTable()" value="Enable" />
 </body>
</html>

每当我点击Disable按钮时,表格突出显示仍然启用。我对此有点新意,所以我真的需要你的帮助。

答案
<html>
<head>
<script type="text/javascript">
disable = new Boolean();
 function highlight(a) {
  if(disable==false)a.className='highlight'
 }

 function normal(a) {
  a.className='normal'
 }
</script>

<style type="text/css">
 table#tblTest {
  width: 100%;
  margin-top: 10px;
  font-family: verdana,arial,sans-serif;
  font-size:12px;
  color:#333333;
  border-width: 1px;
  border-color: #666666;
  border-collapse: collapse;
 }

 table#tblTest tr.highlight td {
  background-color: #8888ff;
 }

 table#tblTest tr.normal {
  background-color: #ffffff;
 }

 table#tblTest th {
  white-space: nowrap; 
  border-width: 1px;
  padding: 8px;
  border-style: solid;
  border-color: #666666;
  background-color: #dedede;
 }

 table#tblTest td {
  border-width: 1px;
  padding: 8px;
  border-style: solid;
  border-color: #666666;
  background-color: #ffffff;
 }
</style>
</head>

<body>
 <table id="tblTest">
  <thead>
   <tr>
    <th>Name</th>
    <th>Address</th>
   </tr>
</thead>
<tbody>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" >
        <td>Tom</td>    
        <td>UK </td>
    </tr>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" >
        <td>Hans</td>   
        <td>Germany</td>
    </tr>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" > 
        <td>Henrik</td> 
        <td>Denmark</td>
    </tr>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" >
        <td>Lionel</td> 
        <td>Italy</td>
    </tr>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" >
        <td>Ricardo</td>    
        <td>Brazil</td>
    </tr>
    <tr onMouseOver="highlight(this)" onMouseOut="normal(this)" >
        <td>Cristiano</td>  
        <td>Portugal</td>
    </tr>
</tbody>
</table>
 <input type="button" onclick="disable = true;" value="Disable" />
 <input type="button" onclick="disable = false;" value="Enable" />
 </body>
</html>

修复了你的代码。使用函数检查它是否被禁用,如果不是,则突出显示。如果是,那就不要。很简单。

Demo

另一答案

通过将表保留在“fieldset”标记中并通过Javascript禁用它,可以阻止包含输入字段的整个表

另一答案

如果要将其“查看”禁用或启用,请将类规则添加到样式表,并将类添加到表中以启用或禁用。

function disableTable() {
  addClassName(document.getElementbyId('tblTest'), 'disabled');
}
function enableTable() {
  removeClassName(document.getElementbyId('tblTest'), 'disabled');
}

function trim(s) {
  return s.replace(/(^s+)|(s+$)/g,'').replace(/s+/g,' ');
}

function hasClassName (el, cName) {
  var re = new RegExp('(^|\s+)' + cName + '(\s+|$)');
  return el && re.test(el.className);
}

function addClassName(el, cName) {
  if (!hasClassName(el, cName)) {
      el.className = trim(el.className + ' ' + cName);
  }
}

function removeClassName(el, cName) {
  if (hasClassName(el, cName)) {
    var re = new RegExp('(^|\s+)' + cName + '(\s+|$)','g');
    el.className = trim(el.className.replace(re, ''));
  }
}
另一答案

这将从你的tr中删除onmouseover事件。

  function disableTable() {
   var rows = document.getElementsByTagName("tr");
   for (var i = 0; i < rows.length; i++) {
     rows[i].onmouseover= null;
   } 
  }
另一答案

您无法禁用表格。你想用这个来实现什么?这些表格无论如何都是只读的。

如果表中有输入标记,则可以逐个禁用它们。

另见"Disabling" an HTML table with javascript

另一答案

无法禁用表格。你想要做的是禁用输入按钮,并在HTML表格上有一个类,它会给你选择按钮的onclick事件淡出/淡出的幻觉。

另一答案

您无法禁用表格。表只显示数据 - 在HTML中,您只能禁用输入,选择和textareas等表单元素,因此您无法再与它们进行交互(即在其中键入数据,单击它或选择一个选项)。

我认为你想要实现的是在按钮点击上删除事件onMouseOver / -Out?你可能最好使用jQuery - 看看Events。解决方案是在按钮点击时添加和删除事件,就像在这个fiddle中一样。

另一答案

请遵循以下食谱:

定义两组CSS规则。一套规则总是从table.enabled开始,另一组用table.disabled开始

要启用/禁用整个表,请找到DOM元素(当表具有document.getElementbyId('tblTest') id时使用tblTest)并分配相应的类:

document.getElementbyId('tblTest').classname = enabled ? 'enabled' : 'disabled';
另一答案

如果你想让它在任何地方“无法点击” - 你可以在上面添加一个相同大小的transperent div。

另一答案
<html>
   <script>
      function disableTable(){
      document.getElementById("myTableFieldSet").disabled = true;
      }
      function enableTable(){
      document.getElementById("myTableFieldSet").disabled = false;
      }

   </script>
   <body>
      <form>
         <fieldset>
            <!-- place the table in a separate fieldset -->
            <fieldset id="myTableFieldSet">
               <table id="myTable">
                  <tr>
                     <td>Name</td>
                     <td>Email</td>
                  </tr>
                  <tr>
                     <td><input type="text"></td>
                     <td><input type="email"></td>
                  </tr>
               </table>
            </fieldset>
         </fieldset>
         <button type="button" onclick="disableTable()">Disable Table</button>
         <button type="button" onclick="enableTable()">Enable Table</button>
      </form>
   </body>
</html>

以上是关于如何使用Javascript禁用和启用HTML表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript/jquery 在选择下拉菜单中启用/禁用引导选项

asp.net c#.net jquery / javascript 如何使用复选框启用或禁用 requiredfieldvalidator

使用 javascript 和 asp.net 启用和禁用按钮

如何禁用和启用表 mysql 中的所有约束,包括。 PK FK CHK UNI 等

字段启用禁用javascript不起作用

如何启用/禁用 HTML5 必填字段验证?