别无选择在javascript中复制变量,否则它将无法工作

别无选择在javascript中复制变量,否则它将无法工作,javascript,html,css,function,variables,Javascript,Html,Css,Function,Variables,在这里您可以找到我的全部代码: 一切都很好,但有件事让我觉得好笑,就是这样: function drawLine() { var div1 = document.getElementById('circle'); var div2 = document.getElementById('companyName'); connect(div1, div2, "#000", 1, "line1"); var div1 =

在这里您可以找到我的全部代码:

一切都很好,但有件事让我觉得好笑,就是这样:

    function drawLine()
    {
        var div1 = document.getElementById('circle');
        var div2 = document.getElementById('companyName');
        connect(div1, div2, "#000", 1, "line1");
        var div1 = document.getElementById('circle2');
        var div2 = document.getElementById('companyName');
        connect(div1, div2, "#000", 1, "line2");
        var div1 = document.getElementById('circle3');
        var div2 = document.getElementById('companyName');
        connect(div1, div2, "#000", 1, "line3");
        $('.line1').fadeIn(800, function() {
        });
        $('.line2').fadeIn(800, function() {
        });
        $('.line3').fadeIn(800, function() {
        });
    }
你看,我一遍又一遍地声明var div1 div2,即使是同一件该死的事情。。。现在我试着这样做:

function drawLine()
{
    var div1 = document.getElementById('circle');
    var div2 = document.getElementById('companyName');
    connect(div1, div2, "#000", 1, "line1");
    var div3 = document.getElementById('circle2');
     connect(div3, div2, "#000", 1, "line2");
    var div4 = document.getElementById('circle3');
    connect(div4, div2, "#000", 1, "line3");
    $('.line1').fadeIn(800, function() {
    });
    $('.line2').fadeIn(800, function() {
    });
    $('.line3').fadeIn(800, function() {
    });
}
给我的错误是,从圆开始画线是正常的,然后在0处向右走,就像div2不存在一样。。。第一个圆工作正常,直线连接到中间的文本,导致变量在它之前被声明。但是一旦我在其他连接之前删除了var div2,就不再工作了


有人能给我解释一下当你更改文档时发生了什么吗?body的innerhtml所有对象都被重新创建。 这就是为什么你必须一直重新获取元素


如果您不想这样做,您需要附加到正文中,而不是一直更改其html。

无法理解您的问题,请在JSFIDLE中的正确位置复制代码,您将了解我的意思,据我所知,第二个代码将被支持工作。。但事实并非如此。如果您使用的是jQuery,那么您究竟为什么要坚持使用
document.getElementById
?我今天开始使用javascript。。。getelementbyid的替代方案是什么?因为如果我不在firefox中这样做,它就不会显示。啊啊啊啊,非常感谢,现在解释一下。:)我有点困惑@Aenil说真的,永远不要做
element.innerHTML+=…
这样的事。这使得它可以重建整个内容,而且速度非常慢。使用其他方法添加内容,如
appendChild
或甚至
insertAdjacentHTML
。如果屏幕大小调整,我必须重新计算行的位置,否则它会固定在屏幕上,看起来非常难看。所以,我认为,我需要的是删除然后重新创建,而不是附加。是的,我同意大量的代码,这将是非常缓慢的,但我使用的是一个计时器。5秒后不活动(调整大小),然后删除/重新创建行。