【问题标题】:JavaScript set content editable value to variableJavaScript 将内容可编辑值设置为变量
【发布时间】:2022-01-19 20:42:15
【问题描述】:

我在 html 中有一个内容可编辑的 <p> 标记和一个按钮。我想知道如何做到这一点,以便在按下按钮时,名为 content 的变量将设置为 content editable p tag 内的值。例如,如果您输入<p> 标签“Hello world”并按下按钮,变量内容的值将是“Hello world”

代码:

<p contenteditable="true">
hi
</p>

<button onclick="update()">
Update
</button>

<script>
function update() {
var content = "content of content editable"
console.log (content)
}
</script>

【问题讨论】:

  • 直截了当:用 ID 命名 p 元素,使用 Javascript 查找名称为 p 的 DOM 对象,换出 val。您可以按原样执行此操作,通过迭代 DOM 树来查找 p 元素,但我怀疑您的页面上会有更多元素,并且标识符使识别事情变得容易。
  • innerHTML 或 innerText

标签: javascript html jquery css contenteditable


【解决方案1】:

您首先希望通过使用内联脚本来避免任何问题。因此,首先要摆脱 onclick,并为您将用于此操作的每个元素指定一个特定的 ID。

接下来我们将查询选择元素/按钮并为我们的按钮应用一个事件侦听器,以了解何时单击它以做出适当的反应。

下面是一个例子。这有点重复,但应该没问题。

function update() {
  return "content of content editable";
}
// Select the submit button
document.querySelector("#editable_submit").addEventListener("pointerup", (event) => {
  // Button Clicked
  document.querySelector("#editable_box").innerText = update(); // Update Editable Box
}, {
  passive: true
});
<p id="editable_box" contenteditable="true">
  hi
</p>

<button id="editable_submit">
Update
</button>

【讨论】:

  • 并为您将用于此操作的每个元素指定一个特定的 ID ids 会创建脆弱的代码,从而导致问题发生。最好尽可能避免ids 并使用其他方法来定位适当的元素(即按类、按位置、按属性等)。
  • 冗长不会抛出数千个 ID,你很好。
  • 不,你不是。当元素有ids 并且你遇到麻烦时,尝试动态添加/删除记录。 ids 是个坏主意。这是众所周知的。
  • 详细不会抛出。
  • 我想你不明白。没有人在谈论 linter。不建议使用ids,因为它们会创建全局属性并要求代码很脆弱,这会阻碍其扩展能力。这是广为人知和理解的。使用不太具体的方法来识别元素提供了更大的灵活性。 ids 应尽可能避免(大多数情况下)。
猜你喜欢
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多