为什么此javascript复选框始终保持未选中状态?

哈尔登

我对以下js有问题。听起来很傻,但是以下js一直未选中第2个复选框(位于<div id="shortcut1"></div>和中<div id="shortcut2"></div>)。我使用其他选项测试了脚本,更改了中的参数cmdInfo我的结论是,无论脚本是什么,都永远不会在末尾选中2 first复选框。

您对这个问题有任何想法吗?我花了几个小时,但我不知道。非常感谢你的帮助 !

https://jsfiddle.net/bqaude3h/2/

const URL_PLACEHOLDER = 'your url'

let commands = [
    { name: "shortcut1", description: null, shortcut: "Alt+W" },
    { name: "shortcut2", description: null, shortcut: "Alt+Q" },
    { name: "shortcut3", description: null, shortcut: "Alt+S" }
]
let cmdInfo = {
    "shortcut1": {
        "storeSearchHistory": true,
        "url": "https://test.com",
        "history": ['test']
    },
    "shortcut2": {
        "storeSearchHistory": false,
        "url": ""
    },
    "shortcut3": {
        "storeSearchHistory": true,
        "url": ""
    }
}

let html, div, existingHistory;
commands.forEach(cmd => {

    html = `
    <div id="${cmd.name}" class="sc-div">
        <div class="flex-container">
            <input type="text" class="shortcut" value="${cmd.shortcut}" />
            <input type="url" class="url" placeholder="${URL_PLACEHOLDER}"
                    value="${cmdInfo[cmd.name].url}" />
        </div>
        <div class="history-div">
            <button>View search history</button>
            <input type="checkbox" class="store-search-history" />
            <label><small>Save search history</small></label>
        </div>
    </div>
    `
    document.querySelector('#shortcuts').innerHTML += html;

    try {
        existingHistory = Boolean(cmdInfo[cmd.name].history.length)
    } catch {
        existingHistory = false;
    }

    div = document.getElementById(cmd.name);
    div.querySelector('button').disabled = !existingHistory;

    div.querySelector('.store-search-history').checked = cmdInfo[cmd.name].storeSearchHistory;
});
卡利玛

问题在于此行: document.querySelector('#shortcuts').innerHTML += html;

您可以阅读有关“ element.innerHTML + =”为什么是错误代码的信息?基本上,浏览器将多次重新解析构造的DOM,这可能会导致引用中断。

这是一个工作示例:

let commands = [{
    name: "shortcut1",
    description: null,
    shortcut: "Alt+W"
  },
  {
    name: "shortcut2",
    description: null,
    shortcut: "Alt+Q"
  },
  {
    name: "shortcut3",
    description: null,
    shortcut: "Alt+S"
  }
]
let cmdInfo = {
  "shortcut1": {
    "storeSearchHistory": true,
    "url": "https://some_url.com"
  },
  "shortcut2": {
    "storeSearchHistory": false,
    "url": ""
  },
  "shortcut3": {
    "storeSearchHistory": true,
    "url": ""
  }
}

let html, div, existingHistory, URL_PLACEHOLDER;
commands.forEach(cmd => {

  html = `
    <div id="${cmd.name}" class="sc-div">
        <div class="flex-container">
            <input type="text" class="shortcut" value="${cmd.shortcut}" />
            <input type="url" class="url" placeholder="${URL_PLACEHOLDER}"
                    value="${cmdInfo[cmd.name].url}" />
        </div>
        <div class="history-div">
            <button>
                <img src="icons/box-open-solid.svg"> View search history
            </button>
            <input type="checkbox" class="store-search-history" />
            <label><small>Save search history</small></label>
        </div>
    </div>
    `
  //document.querySelector('#shortcuts').innerHTML += html;
  document.querySelector('#shortcuts').insertAdjacentHTML('beforeend', html);

  try {
    existingHistory = Boolean(cmdInfo[cmd.name].history.length)
  } catch (e) {
    existingHistory = false;
  }

  div = document.getElementById(cmd.name);
  div.querySelector('button').disabled = !existingHistory;
  div.querySelector('.store-search-history').checked = cmdInfo[cmd.name].storeSearchHistory;
});
<div id='shortcuts'>

</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复选框状态始终保持选中状态

来自分类Dev

复选框未保持选中状态

来自分类Dev

在 CodenameOne 中,为什么未选中复选框但出现选中状态?

来自分类Dev

为什么将具有不确定状态的复选框更改为未选中状态?

来自分类Dev

选中的复选框未选中。为什么?

来自分类Dev

Android:为什么Checkbox不会针对未选中状态不显示空复选框?

来自分类Dev

复选框未选中状态

来自分类Dev

复选框状态(如果未选中)

来自分类Dev

复选框未处于“选中”状态

来自分类Dev

如何始终使复选框始终处于未选中状态

来自分类Dev

带有javascript的Xforms-确定复选框处于选中状态还是未选中状态

来自分类Dev

复选框未选中onclick JavaScript

来自分类Dev

jQuery如何使复选框始终处于选中状态

来自分类Dev

jqgrid复选框始终处于选中状态

来自分类Dev

php ajax复选框始终处于选中状态

来自分类Dev

复选框始终显示错误值(未选中)

来自分类Dev

选中时,为什么复选框属性显示为“ false”(未选中)?

来自分类Dev

HTML复选框在刷新后保持选中状态

来自分类Dev

如何保持ExpandableListView复选框处于选中状态?

来自分类Dev

提交后复选框保持选中状态

来自分类Dev

为什么在单击另一个复选框时未选中我的复选框?(Vue,CSS)

来自分类Dev

通过复选框PyQt始终保持最重要的行为

来自分类Dev

通过复选框PyQt始终保持最重要的行为

来自分类Dev

为什么复选框的状态不变?

来自分类Dev

为什么复选框的状态不变?

来自分类Dev

jQuery为什么不选中/取消选中复选框

来自分类Dev

为什么不选中和取消选中复选框?

来自分类Dev

复选框未选中

来自分类Dev

复选框未显示为选中状态

Related 相关文章

热门标签

归档