【问题标题】:How to access and modify style of appending element如何访问和修改附加元素的样式
【发布时间】:2020-02-18 09:53:11
【问题描述】:

放下后,我将孩子附加到容器中。

我的要求是我想在光标位置附加孩子。为此,我需要访问要附加的孩子的样式。

我以data.style={{...}} 的身份这样做。但它说的是

无法设置未定义的属性“样式”

 drop(event) {
      event.preventDefault();
      var data= event.dataTransfer.getData("Text");
      //data.style={position:"relative"}

      event.target.appendChild(document.getElementById(data));
      console.log(event.clientX)
      data.target.style={
        left : event.clientX + 'px',
        top : event.clientY+ 'px'
      }

【问题讨论】:

  • 请格式化您的代码以完成您的问题。您可以在stackoverflow.com/help/how-to-ask 找到有关它的信息和提示
  • 为什么要混合使用 javascript 选择器和 reactjs,你可以在这里使用 ref。你能把完整的组件代码发给你吗
  • 格式改进

标签: javascript reactjs drag-and-drop appendchild


【解决方案1】:

未定义的风格

因为选择器是未定义的,应该是因为如果data 是一个节点,那么它将没有target 属性。因此,您必须直接在data 上进行操作:

data.style={
    left : event.clientX + 'px',
    top : event.clientY+ 'px'
}

或者您可能希望将代码更改为:

drop(event) {
  event.preventDefault();
  var data = document.getElementById(event.dataTransfer.getData("Text"));
  //data.style={position:"relative"}
  event.target.appendChild(data);
  console.log(event.clientX)
  data.style = {    // <------------apply styles on "data" node
    left: event.clientX + 'px',
    top: event.clientY + 'px'
  }
}

【讨论】:

  • 现在我可以访问child的样式了。谢谢
  • 但是没有将孩子定位在光标位置。你能帮我解决这个问题吗@Jai
  • 在这种情况下,您必须计算目标元素的宽度、高度并将其与值相减。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2022-07-27
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
相关资源
最近更新 更多