如何使用javascript和CSS在文档中插入类似文本的元素?

时间:2020-03-05 18:57:59  来源:igfitidea点击:

我想使用javascript将一些元素插入当前页面。
例如这是原始文件:
<p>世界你好!</ p>

现在,我想在文本中插入一个元素,这样它将变为:

<p>我们好<span id = span1>新</ span>世界!</ p>

我需要span标签,因为我想稍后再处理。显示或者隐藏。
但是现在出现了问题,如果原始页面已经在所有<span>标记上定义了一种奇怪的CSS样式,那么我刚刚插入的" new"将不会与" Hello"和" world"相同。如何避免这种情况?我希望"新"与"你好"和"世界"完全相同。

解决方案

回答

还要在JavaScript版本的<span>标签上包含CSS中定义的类定义。

<span class="class_defined_in_css">

(此<span>`标签将成为JavaScript代码的一部分。)

回答

为什么不给该段落指定ID,然后在必要时使用Javascript添加或者删除该词?当我们插入单词" new"或者完全更改段落内容时,它肯定会保留与段落相同的格式。

回答

好吧,我不知道我们对使用<span>标签有多满意,但是为什么不这样做呢?

<p style="display: inline">Hello <p id="myIdValue" style="display: inline">new</p> World</p>

这样,插入的html保留与外部html相同的样式,并且我们仍然可以使用它的句柄,等等。当然,我们必须添加内联CSS样式,但是它可以工作。

回答

唯一的方法是修改其他跨度以包括一个类名称,并且仅将样式应用于具有该类的跨度,或者覆盖为新跨度的所有跨度设置的样式。

因此,如果我们已完成:

span {
  display: block;
  margin: 10px;
  padding: 10px;
}

我们可以使用以下方法覆盖:

<span style="display: inline; margin: 0; padding: 0;">New Span</span>

回答

只需覆盖任何跨度样式即可。将布局属性设置回浏览器默认值,并将格式设置为从父级继承:

span#yourSpan {
  /* defaults */
  position: static;
  display: inline;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;

  /* inherit from parent node */
  font: inherit;
  color: inherit;
  text-decoration: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  white-space: inherit;
  word-spacing: inherit;
}

这应该足够了,尽管如果我们不使用id,则可能需要添加!important:

<span class="hello-node">hello</span>

span.hello-node {
  /* defaults */
  position: static !important;
  display: inline !important;
  ...
}