www.91084.com

GVKun编程网logo

php – 添加标题在动态创建表单字段Jquery .insertBefore之前(php设置标题)

17

本文将带您了解关于php–添加标题在动态创建表单字段Jquery.insertBefore之前的新内容,同时我们还将为您解释php设置标题的相关知识,另外,我们还将为您提供关于html–PHPDomN

本文将带您了解关于php – 添加标题在动态创建表单字段Jquery .insertBefore之前的新内容,同时我们还将为您解释php设置标题的相关知识,另外,我们还将为您提供关于html – PHP DomNode-> insertBefore()、insertBefore()与PHP DOM无法正常工作、insertbefore和before的区别、javascript – jQuery – insertBefore()用于原始文本的实用信息。

本文目录一览:

php – 添加标题在动态创建表单字段Jquery .insertBefore之前(php设置标题)

php – 添加标题在动态创建表单字段Jquery .insertBefore之前(php设置标题)

我有一个动态创建的表单,所以我无法编辑表单本身的布局.但是,我想在表单中的一个文本输入字段上添加标题.我给了该字段一个唯一的css ID,并使用以下脚本尝试在其之前添加我的标题:

<script type="text/javascript">
$('<h5>Calculate Return</h5>').insertBefore('#price');
</script>

出于某种原因,这不起作用,任何人都可以想到为什么会这样.这是有问题的页面

http://www.theres-a-thought.com/client-yourdream/?page=property_submit

解决方法

查看您的页面,我看不到#price的定义.也许它稍后通过JS添加,我错过了..

您在无冲突模式下使用jquery,并且需要将代码包装在文档中.

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('<h5>Calculate Return</h5>').insertBefore('#price');
});
</script>

跑这个;但是,对页面没有影响(从我可以看到).

以下代码有效,因为ID存在.这不是你想要完成的,但它应该让你开始.

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('<h5>Calculate Return</h5>').insertBefore('#property_name');
});
</script>

html – PHP DomNode-> insertBefore()

html – PHP DomNode-> insertBefore()

我试图在我的html字符串中插入节点.
我的目标是在每个h2标签之前插入一个元素.

为此,我正在使用:

$htmlString = "<h2>some html</h2>";

$DOM = new DOMDocument();
$DOM->loadHTML($htmlString);

$itemTitles = $DOM->getElementsByTagName('h2');

for($i = 0; $i < $itemTitles->length; $i ++)
{
    $helpNavigatorContents[] = $itemTitles->item($i)->nodeValue;
    $textBefore = new DOMNode(
        '<a name="'.$itemTitles->item($i)->nodeValue.'"></a>'
    );
    $itemTitles->item($i)->parentNode->insertBefore(
        $textBefore,$itemTitles->item($i)
    );
}

$htmlString = $DOM->saveHTML($DOM);

在这里我遇到了$textBefore的问题.当我将$textBefore声明为DOMText时,我可以在节点之前插入文本,但是当我尝试使用DOMNode时,我收到以下错误(Demo):

Warning: DOMNode::insertBefore(): Couldn’t fetch DOMNode

解决方法

代码没有任何意义. DOMNode没有构造函数.根本不应该创建它.您应该通过DOMDocument创建特定的节点类型,以使它们与Document相关联.

假设您想要使用锚点添加所有H2元素,这是如何做到的:

libxml_use_internal_errors(true);
$DOM = new DOMDocument();
$DOM->loadHTML($htmlString);
$DOM->preserveWhiteSpace = false;

foreach ($DOM->getElementsByTagName('h2') as $h2) {
    $a = $DOM->createElement('a');
    $a->setAttribute('name',$h2->nodeValue);
    $h2->parentNode->insertBefore($a,$h2);
}
$DOM->formatOutput = true;
echo $DOM->saveHTML();

演示http://codepad.org/N0dPcLwT

要将H2元素包装到A元素中,只需执行相同操作并添加即可

$a->appendChild($h2);

演示http://codepad.org/w7Hi0Bmz

insertBefore()与PHP DOM无法正常工作

insertBefore()与PHP DOM无法正常工作

我有这个结构:
<p>Second paragraph</p>
<p>First paragraph</p>
<p>Third paragraph</p>

我想用PHP DOM重新排列元素,把它变成这样的东西:

<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>

我尝试使用以下代码执行此操作:

$html = "<p>Second paragraph</p><p>First paragraph</p><p>Third paragraph</p>";

$dom = new domDocument;
$dom->loadHTML( $html );

$dom->getElementsByTagName('p')->item(1)->insertBefore($dom->getElementsByTagName('p')->item(0));

但是当我使用时:

echo $dom->getElementsByTagName('p')->item(0)->nodeValue;

我明白了:

First paragraphSecond paragraph

结果,所以我想我在这里做错了.

从 PHP Documentation:
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [,DOMNode $refnode ] )

refnode
    The reference node. If not supplied,newnode is appended to the children.

因此,由于您未指定引用节点,因此它会将其附加到子节点.您的代码将生成此HTML:

<html>
<body>
    <p>First paragraph<p>Second paragraph</p></p>
    <p>Third paragraph</p>
</body>
</html>

你需要做的是在parentNode上执行insertBefore,参考第二段,如下所示:

$nodes = $dom->getElementsByTagName('p');
$nodes->item(0)->parentNode->insertBefore($nodes->item(1),$nodes->item(0));
echo $dom->saveHTML();

输出:

<html>
<body>
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <p>Third paragraph</p>
</body>
</html>

insertbefore和before的区别

insertbefore和before的区别

insertbefore和before的区别:1、用法;2、参数;3、返回值;4、兼容性;5、性能;6、选择器;7、自动创建元素;8、错误处理;9、清理;10、链式调用;11、其他差异。详细介绍:1、用法,insertbefore是一个dom方法,可以直接在任何dom元素上调用,before是一个jquery方法,只能在jquery对象上调用;2、参数等等。

insertbefore和before的区别

insertBefore和before都是在JavaScript中用于操作DOM元素的方法,但它们之间存在一些重要的区别。

insertBefore(newNode, referenceNode)是一个DOM方法,它用于在指定的参考节点之前插入一个新的节点。这个方法需要两个参数:新的节点(newNode)和参考节点(referenceNode)。

before(content, ...args)是一个jQuery方法,它用于在元素之前插入内容。这个方法接受两个参数:要插入的内容(content)和其他可选参数。

下面是对这两个方法的详细比较:

1、用法:

insertBefore是一个DOM方法,可以直接在任何DOM元素上调用。

before是一个jQuery方法,只能在jQuery对象上调用。

2、参数:

insertBefore接受两个参数:要插入的新节点和参考节点。新节点将被插入到参考节点之前。

before接受两个参数:要插入的内容和其他可选参数。要插入的内容可以是HTML字符串、DOM元素或jQuery对象。

3、返回值:

insertBefore返回插入的新节点。

before返回调用它的jQuery对象。对于链式调用,这是非常重要的。

4、兼容性:

insertBefore是DOM标准的一部分,因此在所有浏览器中都可用。

before是jQuery特有的方法,因此只能在支持jQuery的浏览器中使用。

5、性能:

insertBefore是原生的DOM操作,因此在处理大量DOM元素时,它的性能通常优于jQuery的before方法。

6、选择器:

insertBefore不接受CSS选择器作为参数,它只接受DOM元素或另一个节点作为参考节点。

before可以接受CSS选择器作为参数,这使得我们可以轻松地在匹配的元素之前插入内容。

7、自动创建元素:

insertBefore不会自动创建元素。如果参考节点不存在,那么新节点将不会被插入。

before会自动创建元素。如果目标元素不存在,它将会被创建出来,然后插入内容。

8、错误处理:

如果在尝试使用insertBefore时参考节点不存在,会抛出一个错误。

在尝试使用before时,如果目标元素不存在,它将会自动创建元素,不会有错误产生。

9、清理:

insertBefore不会自动清理或删除任何东西。你需要手动处理这些事情。

before会自动清理旧的内容并替换为新的内容。如果你提供了HTML字符串,它将会被转换为一个jQuery对象并插入到目标元素之前。如果提供了DOM元素或jQuery对象,它将会被移动到目标元素之前。如果提供了其他参数(如文本或函数),它将会被转换为一个HTML字符串并插入到目标元素之前。在所有情况下,旧的内容都会被自动删除和替换。

10、链式调用:

insertBefore不直接支持链式调用。你需要在一个单独的语句中调用它两次才能实现链式效果。例如:element.parentNode.insertBefore(newElement, element);。然而,你可以在一个单独的语句中调用两次来模拟链式效果。例如:element.parentNode.insertBefore(newElement, element).parentNode.insertBefore(anotherElement, element);。

before直接支持链式调用。你可以在一个语句中连续调用它来插入多个元素或内容。例如:element.before(content1).before(content2);。这会在元素之前连续插入两个内容。

11、其他差异:

insertBefore只接受一个参考节点,而before可以接受多个内容参数和一个参考节点参数(如果提供的话)。如果你只提供一个内容参数,那么它将会被插入到所有匹配的元素之前。如果你提供多个内容参数,它们将会被依次插入到匹配的元素之前。如果你还提供了一个参考节点参数,那么内容将会被插入到该参考节点之前(而不是所有匹配的元素之前)。

以上就是insertbefore和before的区别的详细内容,更多请关注php中文网其它相关文章!

javascript – jQuery – insertBefore()用于原始文本

javascript – jQuery – insertBefore()用于原始文本

我使用jQuery 1.11.2和jquery-migrate 1.2.1.这是我正在尝试做的简单示例:

https://jsfiddle.net/bek3wrug/

我想在页面上的某个元素之前插入一些文本(不完全包装到HTML标记中),jQuery只插入包含在HTML标记内的部分.
我不能使用prepend(),因为我不想在一些元素中插入它,我需要先插入它.

有没有办法让jQuery插入所有文本,不仅包装成HTML标签?

解决方法:

由于它包含textNode,因此需要使用jQuery.parseHTML方法,该方法生成一组节点.否则它将被解释为选择器,因为没有使用字符串选择任何内容,所以不会发生任何事情.

$($.parseHTML("Raw text to insert. <span>Text inside span to insert. </span>")).insertBefore("#mySpan")

参见:Creating new elements using jQuery.

$($.parseHTML("Raw text to insert. <span>Text inside span to insert. </span>")).insertBefore("#mySpan")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
  <span id="mySpan">Original text</span>
</div>

或者使用before()方法.

$("#mySpan").before("Raw text to insert. <span>Text inside span to insert. </span>")
$("#mySpan").before("Raw text to insert. <span>Text inside span to insert. </span>")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
  <span id="mySpan">Original text</span>
</div>

关于php – 添加标题在动态创建表单字段Jquery .insertBefore之前php设置标题的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于html – PHP DomNode-> insertBefore()、insertBefore()与PHP DOM无法正常工作、insertbefore和before的区别、javascript – jQuery – insertBefore()用于原始文本等相关知识的信息别忘了在本站进行查找喔。

本文标签: