Tag: DOM

获得子节点的最佳方法

我想知道,JavaScript提供了各种方法来获取任何元素的第一个子元素,但哪个最好? 我最好的意思是:大多数跨浏览器兼容,最快,最全面和可预测的行为。 我用作别名的方法/属性列表: var elem = document.getElementById('container'); var child = elem.children[0]; var child = elem.firstElementChild; // == children[0] 这适用于这两种情况: var child = elem.childNodes[0]; // or childNodes[1], see below 这是在forms,或<div>迭代的情况下。 如果我可能遇到文本元素: var child = elem.childNodes; // treat as NodeList var child = elem.firstChild; 据我firstChild , firstChild使用childNodes的NodeList, firstElementChild使用children 。 我在MDN参考基础上的这个假设: childNode是对元素节点的第一个子元素的引用,如果没有,则为null 。 我猜测,就速度而言,如果有的话,差异将firstElementChild没有,因为firstElementChild是firstElementChild children[0]的引用,并且children对象已经在内存中。 什么引起我,是childNodes对象。 我用它来查看一个表格元素。 当children列出所有的表单元素时, […]

为什么firebug将<tbody>添加到<table>?

我查看了html源代码,没有<tbody> ,但是当通过HTML选项卡中的萤火虫查看时, <tbody>出现。 任何想法为什么?

检测/监测DOM变化的最有效方法?

我需要一个有效的机制来检测DOM的变化。 最好是跨浏览器,但如果有任何不是跨浏览器的有效手段,我可​​以实现这些与一个故障安全跨浏览器方法。 特别是,我需要检测会影响页面文本的更改,因此需要任何新的,删除或修改的元素,或者更改内部文本(innerHTML)。 我无法控制所做的更改(可能是由于第三方JavaScript包含等),所以无法从这个angular度来处理 – 我需要以某种方式“监视”更改。 目前我已经实现了一个“quick'n'dirty”方法, body.innerHTML.length隔一段时间检查body.innerHTML.length 。 这当然不会检测到导致返回相同长度的变化,但是在这种情况下“足够好” – 发生这种情况的可能性非常小,在这个项目中,不能检测到变化在丢失的数据。 body.innerHTML.length的问题是它很昂贵。 在一个快速的浏览器上,它可能需要1到5毫秒,这可能会让事情变得非常糟糕 – 我也在处理大量的iframe,这些都会加起来。 我很确定这样做的代价很大,因为innerHTML文本不是由浏览器静态存储的,每次读取时都需要从DOM中计算出来。 我正在寻找的答案的types是从“精确的”(例如事件)到“足够好”的任何东西 – 可能是innerHTML.length方法的“quick'n'dirty”,但执行速度更快。 编辑:我也应该指出,尽pipe检测已被修改的精确元素是“好的”,但这不是绝对必要的 – 只是事实上已经有任何改变就足够了。 希望这能扩大人们的反应。 我要去调查突变事件,但是我仍然需要IE支持的回退,所以任何有创意的,不寻常的想法都是非常受欢迎的。

我如何计算DOM元素内的文本行? 我可以吗?

我想知道是否有一种方法来计数线内的行例如。 说我们有这样一个div: <div id="content">hello how are you?</div> div取决于许多因素,可以有一个,或两个,甚至四个文本行。 脚本有什么方法可以知道吗? 换句话说,DOM中是否有自动中断?

find换行

假设我在一行中有一些随机的文本块。 像这样 Lorem ipsum dolor sit amet, consectetur adipiscing elit. 但无论什么原因(包含元素的宽度设置,使用文本缩放等),在查看器的屏幕上,它显示为两行或更多行。 Lorem ipsum dolor sit amet, consectetur adipiscing elit. 要么 Lorem ipsum dolor sit amet, consectetur adipiscing elit. 有没有什么方法可以find通过JavaScript哪些线包裹发生? $('p').text()和$('p').html() return Lorem ipsum dolor sit amet, consectetur adipiscing elit. 不pipe文本如何显示。

Javascript获得一个节点的XPath

反正有没有在Javascript中返回一个DOM元素的XPathstring?

我怎样才能应用一个jQuery函数的所有元素具有相同的ID?

我是jQuery的新手。 我有以下代码: jQuery(document).ready(function() { jQuery('#carousel').jcarousel(); }); 它仅适用于id="carousel"的第一个ul ,而不适用于其他的。 我如何将它应用于所有具有相同ID的元素? HTML: <!– jQuery applies to this div –> <div id="slideshow-carousel"> <ul id="carousel" class="jcarousel jcarousel-skin-tango"> <!– … –> </ul> </div> <!– jQuery does not apply for this div –> <div id="slideshow-carousel"> <ul id="carousel" class="jcarousel jcarousel-skin-tango"> <!– … –> </ul> </div>

将HTML页面replace为通过AJAX检索的内容

我有一个典型的结构的HTML页面: <html> <head> <script src="…" ></script> <style>…</style> </head> <body> content </body> <script> var success_callback = function(data) { // REPLACE PAGE CONTENT & STRUCTURE WITH "data" } ajax(url, params, success_callback); </script> </html> 你认为这是可能的吗? 我已经尝试给html标签一个id和$(id).replace(data); 没有成功。 不要问我为什么,但这是我需要的(我正在与一个特殊的“混搭build设者”网站…这是一个很长的故事)。 编辑 :我忘了说, 接收到的内容中的脚本必须执行 ,甚至包括使用<script src="…">外部脚本。

DOM ID中允许使用哪些字符?

可能重复: 什么是HTML中的id属性的有效值? 下划线似乎很好。 破折号呢? 其他特殊字符?

为什么不在JavaScript中使用元素ID作为标识符?

所有使用过的浏览器都允许访问id="myDiv"的元素,只需编写以下代码: myDiv 看到这里: http : //jsfiddle.net/L91q54Lt/ 无论如何,这种方法似乎是相当不完善的logging,事实上,我遇到的来源甚至没有提及它,而是假设一个会使用 document.getElementById("myDiv") 或者可能 document.querySelector("#myDiv") 甚至在事先知道其ID(即,不在运行时计算)的情况下访问DOM元素。 我可以说,后一种方法的优点在于,如果有人无意尝试在更广的范围内重新定义myDiv (虽然不是这样一个绝妙的主意),但它会用一些不同的值覆盖它,继续进行,而不会注意到冲突。 但是那个呢? 除了代码devise之外,使用简写forms还有什么问题吗?还有什么我在这里丢失的?