标签: dom-node

如何获取DOMElement节点的HTML代码?

我有这个HTML代码:

<html>
    <head>
    ...
    </head>
<body>
    <div>
    <div class="foo" data-type="bar">
        SOMECONTENTWITHMORETAGS
    </div>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

我已经可以使用此函数获取"foo"元素(但仅包含其内容):

private function get_html_from_node($node){
  $html = '';
  $children = $node->childNodes;

  foreach ($children as $child) {
    $tmp_doc = new DOMDocument();
    $tmp_doc->appendChild($tmp_doc->importNode($child,true));
    $html .= $tmp_doc->saveHTML();
  } 
  return $html;
}
Run Code Online (Sandbox Code Playgroud)

但我想返回DOMElement的所有html标签(包括其属性).我怎么能这样做?

php dom domdocument dom-node

28
推荐指数
1
解决办法
3万
查看次数

检查变量是否是有效的节点元素

如何更改JS元素以查看它是节点还是空变量?

javascript dom-node

12
推荐指数
3
解决办法
2万
查看次数

打字稿:TextNode的类型

如果你写下面的代码:

const e = document.body.firstChild;
if (e.nodeType === Node.TEXT_NODE)
    console.log(e.data);
Run Code Online (Sandbox Code Playgroud)

您将在以下位置收到此错误e.data

TS2339:“ChildNode”类型上不存在属性“data”。

而如果条件为真 ( e.nodeType === Node.TEXT_NODE) 则e除了常规ChildNode属性之外还有一些其他属性,例如datawholeText


我应该转换为什么类型(除了any)?

dom textnode dom-node typescript child-nodes

8
推荐指数
1
解决办法
1414
查看次数

何时调用"DOMNodeInserted"事件?

DOMNodeInserted 当节点"被追加到"或"被追加"时调用event?

我问这个是因为以下代码:

function AddTextToContainer () {
    var textNode = document.createTextNode ("My text");
    var container = document.getElementById ("container");

    if (container.addEventListener) {
        container.addEventListener ('DOMNodeInserted', OnNodeInserted, false);
    }
    container.appendChild (textNode);
}
Run Code Online (Sandbox Code Playgroud)

然后:

function AddTextToContainer () {
   var textNode = document.createTextNode ("My text");
   var container = document.getElementById ("container");

   if (textNode.addEventListener) {
       textNode.addEventListener ('DOMNodeInserted', OnNodeInserted, false);
   }
   container.appendChild (textNode);
}
Run Code Online (Sandbox Code Playgroud)

两者都OnNodeInserted在Chrome中调用.这是一个错误吗?

javascript dom dom-events dom-node

5
推荐指数
1
解决办法
4582
查看次数

修改 google.translate.TranslateElement 结果中的元素

我正在尝试将非常方便的 Google Translate 翻译元素嵌入到网页中,这非常简单并且效果很好,但我需要更改在生成的 HTML 中显示的默认文本:

在此输入图像描述

使用过许多 Google API 和 js 库后,我认为这不会有问题,因为它几乎肯定是可配置的,但环顾了一段时间后,我找不到任何对允许您设置此属性的属性的引用,并且总体而言,文档似乎很可怜。基本代码是:

<div id="google_translate_element"></div>
<script>
   function googleTranslateElementInit() {
      var translator = new google.translate.TranslateElement({
      pageLanguage: 'en',
      autoDisplay: false,
      multilanguagePage: false,
      layout: google.translate.TranslateElement.InlineLayout.SIMPLE
   }, 'google_translate_element');
}
</script>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
Run Code Online (Sandbox Code Playgroud)

当我创建 时,我对能够将其设置为属性感到失望translator,因此我决定破解它并使用onDOMNodeInserted侦听器在加载到<div id="google_translate_element"></div>. 我在这里使用 jQuery,所以我的代码是:

$(document).ready(function(){
   $('#google_translate_element').bind('DOMNodeInserted', function(event) {
       $('.goog-te-menu-value span:first').html('Translate');
   });
})
Run Code Online (Sandbox Code Playgroud)

这就是事情变得有趣的地方。Chrome 完美地加载了所有内容,并完美地完成了 innerHTML 替换。Internet Explorer (8) 完全忽略 DOMNodeInserted 侦听器,并且页面加载就像从未调用过 jQuery 函数一样。Firefox (10) 似乎加载良好(但根本没有翻译元素),然后冻结,开始吞噬内存,然后崩溃。

关于如何让这个innerHTML替换工作有什么想法吗?如果你知道displayLabel : "Translate"类似的属性当然是首选,但除非它(以及一个非常丑陋的setTimeout黑客),我有什么办法可以让它工作吗?

javascript jquery google-translate dom-node

5
推荐指数
1
解决办法
2万
查看次数

如何将xml节点添加到symfony Crawler()

我需要在saymfony中管理xml文档.

我没有问题将xml放入Crawler()实例,修改现有节点,然后将xml放入文件中.

但我无法添加新节点.

当我尝试将一个带有appendChild方法的新节点添加到父节点时,我得到了:

错误的文件错误

当我尝试向抓取工具添加方法时,我得到了:

无法向爬虫添加两个不同的源?

如何将简单节点添加到现有爬网程序?

谢谢你的回复

xml web-crawler symfony dom-node

5
推荐指数
1
解决办法
1237
查看次数

html节点的“text”子节点是什么?

我尝试过搜索但没有找到答案:

所以我知道,当浏览器传递或下载页面时,会生成该页面的树结构表示形式(称为 DOM)。然后可以使用 JavaScript 来操作该树的节点(表示元素的对象)。

现在如果我打开 Chrome 的开发者控制台并执行命令:

document.childNodes;
Run Code Online (Sandbox Code Playgroud)

我得到了我所期望的,即两个节点,即 DOCTYPE 和 html 节点

[<!DOCTYPE html>, html]
Run Code Online (Sandbox Code Playgroud)

如果我现在将一个变量分配给 html,然后检查它的节点,如下所示:

var htmlNode = document.childNodes[1];
htmlNode.childNodes;
Run Code Online (Sandbox Code Playgroud)

奇怪的事情发生了:

我按预期得到“头”节点,然后有一个“文本”节点,我不知道它来自哪里,最后按预期得到“主体”节点。

[head, text, body]
Run Code Online (Sandbox Code Playgroud)

我的问题是这个“文本”节点来自哪里?

在此输入图像描述

html javascript dom dom-node

5
推荐指数
1
解决办法
2250
查看次数

如何在 Nodejs 中使用 document.getElementById()

我正在尝试使用nodejs从js文件中的html文件中按id获取元素。我收到错误“文档 ID 未定义”,因为节点默认不提供文档对象模型。

那么我如何在nodejs中使用document.getElementById()

谢谢 !

javascript document getelementbyid node.js dom-node

5
推荐指数
1
解决办法
5万
查看次数

不变违规:参数似乎不是ReactComponent

我需要找到一个组件的offsetLeft

componentDidMount(){
        var tesNo =ReactDOM.findDOMNode(this.refs.dropDown.refs.input.offsetLeft)

    }
<ReactAutocomplete
    ref="dropDown"
   /*.......*/
/>
Run Code Online (Sandbox Code Playgroud)

在调试时,我得到变量tesNo的值。之后,我得到了这个错误:

考虑将错误边界添加到树中以自定义错误处理行为。访问此站点以了解有关错误边界的更多信息。不变违规:参数似乎不是ReactComponent

如何解决这个错误?

dom-node reactjs redux

5
推荐指数
1
解决办法
2131
查看次数

PL/SQL Raw数据类型变量比较

是否可以比较原始数据类型的变量?我正在使用XMLDOM.DomNodes,它是一个具有一个字段的记录:

TYPE DOMNode IS RECORD (id RAW(12));
Run Code Online (Sandbox Code Playgroud)

所以我有两个节点,那么我可以通过它们的id字段来比较它们吗?我尝试了几个样品,乍一看似乎有效:

  FUNCTION findParentNode(p_node IN xmldom.domnode) RETURN PLS_INTEGER
  AS
      nRetVal               PLS_INTEGER;
  BEGIN
     FOR i IN ParentNodes.First .. ParentNodes.Last
     LOOP 
         IF ParentNodes(i).id = p_node.id THEN               
            nRetVal := i;
            EXIT;
         END IF;         
     END LOOP;

     RETURN nRetVal;
  END;
Run Code Online (Sandbox Code Playgroud)

但Oracle文档中有一两件事让我担心: 原始数据是像VARCHAR2数据,只是PL/SQL不解释原始数据 是什么意思?如果pl/sql不解释raw,那么它可以比较吗?

oracle plsql xmldom dom-node

4
推荐指数
1
解决办法
7549
查看次数