当前位置: 首页 > 知识库问答 >
问题:

代码不能在IE 11中运行,在Chrome中工作正常

干稳
2023-03-14

我将元素的ID存储在变量中。问题是什么?

function changeClass(elId) {
  var array = document.getElementsByTagName('td');
  
  for (var a = 0; a < array.length; a++) {
    var str = array[a].id;
    
    if (str.startsWith('REP')) {
      if (str == elId) {
        array[a].style.backgroundColor = "Blue";
        array[a].style.color = "white";
      } else {
        array[a].style.backgroundColor = "";
        array[a].style.color = "";
      }
    } else if (str.startsWith('D')) {
      if (str == elId) {
        array[a].style.backgroundColor = "Blue";
        array[a].style.color = "white";
      } else {
        array[a].style.backgroundColor = "";
        array[a].style.color = "";
      }
    }
  }
}
<table>
  <tr>
    <td id="REP1" onclick="changeClass('REP1');">REPS</td>
    <td id="td1">&nbsp;</td>
  </tr>
  <tr>
    <td id="td1">&nbsp;</td>
    <td id="D1" onclick="changeClass('D1');">Doors</td>
  </tr>
  <tr>
    <td id="td1">&nbsp;</td>
    <td id="D12" onclick="changeClass('D12');">Doors</td>
  </tr>
</table>

共有1个答案

蓝宜
2023-03-14

string.prototype.startswith是JavaScript最新版本ES6中的标准方法。

看看下面的兼容性表,我们可以看到除了Internet Explorer版本之外,当前所有主要平台都支持它。

╔═══════════════╦════════╦═════════╦═══════╦═══════════════════╦═══════╦════════╗
║    Feature    ║ Chrome ║ Firefox ║ Edge  ║ Internet Explorer ║ Opera ║ Safari ║
╠═══════════════╬════════╬═════════╬═══════╬═══════════════════╬═══════╬════════╣
║ Basic Support ║    41+ ║     17+ ║ (Yes) ║ No Support        ║    28 ║      9 ║
╚═══════════════╩════════╩═════════╩═══════╩═══════════════════╩═══════╩════════╝

您需要自己实现.startswith。以下是聚酰胺填充料:

if (!String.prototype.startsWith) {
  String.prototype.startsWith = function(searchString, position) {
    position = position || 0;
    return this.indexOf(searchString, position) === position;
  };
}
 类似资料:
  • 命令“code”。在这本手册里不起作用? 之前的所有其他步骤都奏效了。如何调用OSX终端中的Visual Studio代码?

  • 我有以下Sikuli代码在JMeter这是不工作。 我尝试了Beanshell采样器和JSR223采样器,但在这两种情况下都不起作用。这是我得到的错误。 JSR223采样器 响应消息:javax。剧本脚本异常:javax。剧本ScriptException:FindFailed:C:\scripts\patterns\vnc\vncviewer。png:(32x31)在R[0,0 1920x108

  • 我正在处理碎片,所以在我的视图寻呼机中有三个碎片 因此,我在第一个片段中使用了方法,所以当我从一个片段切换到另一个片段并返回到第一个片段时,我的方法不起作用 所以有人给出解决方案吗

  • 我正在尝试访问此属性: 它在Chrome中运行良好,但在Firefox中我得到了“未定义”。有没有什么方法可以在所有浏览器中做到这一点呢? 如果你想知道我需要它做什么:我想在一个矩形的垂直中心对齐一个可变字体大小的文本。字体大小,然而,总是包括一个小的空隙以上的实际顶部的字母。我想要的是实际的像素高度。字母上方的这个差距正是我将“显性-基线”设置为“悬挂”后“offsettop”的值。

  • 我得到 它不包含我在NetBeans中使用的jdk的路径。我没有找到一种方法告诉Java我想使用另一个jdk,所以我尝试了不使用: 运行特定主文件的示例 在java.lang.class.PrivateGetMethodRecursive(class.java:3048) 在java.lang.class.GetMethod0(class.java:3018) 在java.lang.class.G