相关疑难解决方法(0)

删除div中的所有子DOM元素

我有以下dojo代码在div下创建表面图形元素:

....
<script type=text/javascript>
....
   function drawRec(){
      var node = dojo.byId("surface");
      //   remove all the children graphics
      var surface = dojox.gfx.createSurface(node, 600, 600);

      surface.createLine({
         x1 : 0,
         y1 : 0,
         x2 : 600,
         y2 : 600
      }).setStroke("black");
   }
....
</script>
....
<body>
<div id="surface"></div>
....
Run Code Online (Sandbox Code Playgroud)

drawRec()将第一次绘制矩形图形.如果我在锚点href中再次调用此函数,如下所示:

 <a href="javascript:drawRec();">...</a>
Run Code Online (Sandbox Code Playgroud)

它会再次绘制另一个图形.我需要清理div下的所有图形,然后再次创建.如何添加一些dojo代码呢?

javascript dojox.gfx

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

删除HTML表中的所有行

如何删除HTML表的所有行,除了<th>使用Javascript,并且不循环遍历表中的所有行?我有一个非常庞大的表,我不想在我循环删除它们时冻结UI

html javascript html-table

88
推荐指数
12
解决办法
22万
查看次数

jsPerf如何工作?

今天我参观了jsPerf,现在我想知道......

  1. 什么是"ops/sec"?
  2. 它会做多少次迭代?
  3. 在什么基础上计算哪个更快?这些计算背后的公式是什么?

示例:http://jsperf.com/concatenation-vs-join

有人能告诉我吗?

提前致谢.

javascript performance benchmarking jsperf

41
推荐指数
2
解决办法
8941
查看次数

替换HTMLElement的所有孩子?

在我的代码中,我经常需要用新的子列表替换某个HTML容器的所有子容器.

最快的方法是什么?我目前的方法是将所有新元素收集到DocumentFragment中.我发现然后实际替换孩子的唯一方法是逐个删除所有孩子,并附加片段.有没有更快的方法?

注意:解决方案不需要跨浏览器,但最好不要求使用3d-party组件,如jQuery.目标设备是一个非常慢的CPU 上的WebKit,所以我需要完全控制任何回流.

javascript dhtml

29
推荐指数
4
解决办法
2万
查看次数

如何使用javascript innerHTML更改svg文本标记

我正在使用raphaeljs,我想在svg中显示html(不仅是文本),

所以我使用这段代码:

var r = Raphael("holder", 200, 300);
var t = r.text(10, 10, "ssdwqdwq");
t.node.innerHTML='dddd'
Run Code Online (Sandbox Code Playgroud)

但我不能改变svg的内容,所以我在firebug中安装它,

console.log(t.node)
Run Code Online (Sandbox Code Playgroud)

它显示了这个:

<text x="10" y="13.5" text-anchor="middle" style="font: 10px "Arial";" font="10px "Arial"" stroke="none" fill="#000000">
Run Code Online (Sandbox Code Playgroud)

所以如何在svg上使用javscript更改文本

谢谢

javascript svg raphael

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

解释这个JsPerf.com结果

我在这个网站http://jsperf.com/上进行了测试

这是我运行的jsperf测试的屏幕截图

我想要一些人解释一下

  1. 绿色和粉红色表示什么
  2. 什么是每秒操作数
  3. 什么是95,814,583
  4. 什么是+ - 1.95%
  5. 什么是'最快'和'慢'意味着什么

javascript performance benchmarking jsperf

9
推荐指数
1
解决办法
1196
查看次数

有什么办法可以避免在带有 React 的 SSR 中出现“文本内容不匹配”警告?

我已经使用 webpack 和 HMR 设置了 SSR 环境。有一个静态呈现的标记,该服务器传递给客户端和一个client.js带有ReactDOM.hydrate()方法的包。如果我更改我的源代码,HMR 工作正常,但在控制台中发出警告,说客户端代码和静态标记之间存在不匹配。

我正在使用带有webpack-dev-middleware和的快速服务器webpack-hot-middleware

我的 webpack 配置如下所示:

module.exports = {
  mode: 'development',
  entry: ['webpack-hot-middleware/client', './src/client.js'],
  devServer: {
    hot: true,
    publicPath: '/'
  },
  plugins: [new HotModuleReplacementPlugin()],
  module: {
    rules: [{ test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel-loader' }]
  },
  resolve: {
    extensions: ['.js', '.jsx']
  },
  output: {
    filename: 'client.js',
    path: path.resolve(__dirname)
  }
};
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何方法可以解决这个问题,因为我无法想出如何使我的标记与我所做的更改相匹配的任何想法,或者我应该抑制这些警告?

express reactjs server-side-rendering

7
推荐指数
1
解决办法
3684
查看次数

在Javascript中删除具有特定标记名称的所有DOM元素

如何使用Javascript删除具有特定标记名称的所有元素.例如,我做了以下事情:

var els = document.getElementsByTagName("center");
Run Code Online (Sandbox Code Playgroud)

它返回了所有center元素的数组.我该如何删除所有这些元素?

从即将删除JavaScript中的DOM节点的所有子元素JavaScript的DOM元素删除我知道我可以遍历els,找到每个元素的父然后删除特定节点.但有没有其他方式由JavaScript提供.就像我们$('center').remove()在jquery中可以做的那样,它会删除带有center标记的所有元素.有什么类似于Javascript的东西?

html javascript dom

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

你能在不使用 document.write() 的情况下销毁文档元素和事件监听器吗?

在下面的例子中:

  • 如果您右键单击该文档,它会告诉您它正在收听。
  • 如果您单击 m1,它将替换文档元素,但右键单击该文档仍会通知您它正在侦听。您必须在顶部附近单击鼠标右键,因为该文档没有内容。
  • 如果您单击 m2,它将覆盖文档内容,并且在顶部附近单击鼠标右键不再执行任何操作。检查开发工具中的文档可验证事件处理程序是否已消失。
  • 按下一个按钮后,您必须再次“运行代码片段”以尝试下一个,因为此演示具有破坏性。

有了这些信息。是否有一种不同的方法可以销毁文档并将其替换为新文档,从而在不使用函数的情况下销毁事件处理程序document.write()

document.write()容易出错,“强烈不鼓励”使用它,但我仍然希望能够销毁文档及其事件侦听器。

document.addEventListener('contextmenu', function (e) {
  alert('still listening');
  e.preventDefault();
})

function m1() {
  var doc = document.implementation.createHTMLDocument();
  document.replaceChild(
    document.importNode(doc.documentElement, true),
    document.documentElement
  );
}
function m2() {
  document.close();
  document.write('<html></html>');
}
Run Code Online (Sandbox Code Playgroud)
<button onclick="m1()">m1</button>
<button onclick="m2()">m2</button>
Run Code Online (Sandbox Code Playgroud)

需要明确的是,按钮/函数“m1”未能实现我的目标,因为尽管替换了文档元素,但出于某种原因保留了前一个文档元素的事件处理程序。我想实现 m2 实现的目标,但不使用document.write并且document.close不推荐使用。

附录:

这个问题是为了更好地理解语言和实现它们的引擎的限制。请不要尝试在字里行间阅读或解决某些替代目标。这只是一个事情是否可能的问题。

我不需要知道如何删除事件侦听器或管理事件侦听器,或删除文档的所有子元素。我想知道是否有可能销毁文档元素本身,不留下任何<html>标签,也不留下任何事件侦听器。这是可能的,document.write()但我只是想知道是否有其他方法可以实现这个确切的目标,而不是任何其他假设的目标。

html javascript document.write

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

递归删除javascript中的所有嵌套节点

我一直在尝试编写一些东西来删除元素中的所有节点,包括这些节点中的节点。我觉得我已经很接近这个了

function clear(node) {
    var l = node.childNodes.length;
    for (var i = 0; i < l; i++) {
        console.log(i, node.childNodes);
        var child = node.childNodes[i];

        if (!child.hasChildNodes()) {
            var newchild = child.parentNode;
            newchild.removeChild(child);
            console.log("removed" + child);
            clear(newchild);
        } else {
            clear(child);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

标记看起来像这样

<div>
    <canvas></canvas>
    <div id="diagbox">
        <div id="diag_text">Here's some text</div>
    </div>
    <ul id="option_ul">
        <li>Some text</li>
        <li>Some text</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这是失败前的距离:

<div>
    <div id="diagbox">
        <div id="diag_text"></div>
    </div>
    <ul id="option_ul">
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

它删除了 diag_text 中的文本节点,但未能删除实际的 div。它还删除了 li 元素中的文本节点,并且由于某种原因也成功删除了 li 元素,但在 …

javascript recursion dom

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