0

我只是 javascript 的新手,我正在使用 javascript 或 jquery 进行 DOM 操作

我试图捕捉我的 javascript 变量中的“p”标签,但它不起作用,有人可以做必要的更正吗?

可以使用 javascript 或 jquery 给出答案,两者都对我有用

我在这里也有一些类似的问题(Getting tags when whole HTML page is in one javascript variable)[抱歉这个问题的解释令人困惑]

W3学校

<!DOCTYPE html>
<html>
<body>

<p>The DOM is very useful!</p>
<p>This example demonstrates the <b>getElementsByTagName</b> method.</p>

<script>
var myHTML ='<p>Hello World</p>'
x=myHTML.getElementsByTagName("p");
document.write("Text of first paragraph: " + x[0].innerHTML);
</script>

</body>
</html>

我已经看过这个类似的问题get-content-of-a-div-using-javascriptdom-javascript-get-text-after-tag

这没有回答我的问题

我的场景是
我在一个 javascript 变量中拥有所有 html 页面,我需要将它附加到我的页面,但我们不能这样做,因为你不能有两个 body 或 HTML 标记。所以我需要按标签拆分它.....但是整个元素都在javascript变量中!那么我该怎么做呢?

4

5 回答 5

1

你应该这样做

allPara = document.getElementsByTagName("p");
alert("Text of first paragraph: " + allPara[0].innerHTML);

演示。

jQuery中,您可以编写(对于第一个P元素)

$('p:first').html();

演示。

我认为,你应该先学习 vanilla JavaScript,至少基础知识和MDN是学习它的好地方。

更新 :

您可以使用它来做到这一点(因为 OP 在评论/解析变量中的元素中要求它)

var htmlString = '<span>Span</span><p>Para 1</p><p>Para 2</p>';
el = document.createElement('div');
el.innerHTML = htmlString;
var ps = el.getElementsByTagName('p');
console.log(ps[0].innerHTML); // Para 1

演示。

于 2013-09-06T06:26:25.520 回答
1
var myHTML ='<p>Hello World</p>'

这里myHTML是一个字符串而不是一个 dom 元素。它不会包含一个名为getElementsByTagName的函数

如果您在页面中搜索,它将是:document.getElementsByTagName

于 2013-09-06T06:26:31.763 回答
1

为什么不简单地这样做:

<!DOCTYPE html>
<html>
<body>


<p>The DOM is very useful!</p>
<p>This example demonstrates the <b>getElementsByTagName</b> method.</p>

<script>
var myHTML ='<p>Hello World</p>';
document.write("Text of first paragraph: " + myHTML);
</script>

</body>
</html>

对于内部文本:

<script>
var myHTML ='<p>Hello World</p>';
var para = document.createElement('P');
para.innerHTML=myHTML;   
document.write("Text of first paragraph: " + $(para).find('P').text());
</script>
于 2013-09-06T06:31:49.453 回答
1

好的,让我直截了当。您想将这一行“第一段文本:Hello World”附加到文档中。

这是演示

JS

var myHTML=document.getElementsByTagName("p");
myHTML[0].innerHTML="Text of first paragraph:Hello World "+myHTML[0].innerHTML;

说明:您将所有带有标签“p”的元素保存在一个名为 myHTML 的 var 中。现在 myHTML 是一个节点列表。nodeList 就像一个数组。

所以你调用节点列表的元素就像你调用数组的元素一样

因此第一段将是 myHTML[0]。现在您想将文本附加到第一段,以便以下行达到目的

 myHTML[0].innerHTML="Text of first paragraph:Hello World "+myHTML[0].innerHTML;

编辑:根据 OP 的进一步说明,据了解,OP 需要另一个带有所需文本的“p”标签。

演示

代码

var myHTML ='Hello World';
var para = document.createElement("p");
para.innerHTML="Text of first paragraph: " +myHTML;
document.body.appendChild(para);
于 2013-09-06T06:46:19.987 回答
0

尝试这样的事情

    <script>
        var myHTML ='<p>Hello World</p>'
        document.write("Text of first paragraph: " + $(myHTML).html()); // using jquery
    </script>
于 2013-09-06T07:54:36.500 回答