0

我有以下 javascript 代码:

function createDiv(id){
      var temp = document.createElement('div');
      temp.setAttribute("id", id); 
      document.getElementsByTagName('body')[0].appendChild(temp);
    }

createDiv('upper_outer');

function /*ABSTRACTION*/(e)
    {

          /* Part not shown of the function is working correctly */

          var upper = document.getElementById("upper_outer");

          upper.style.display = "block";
          upper.style.position = "absolute";
          upper.style.height = $(document).height() - init_co[0] + "px";
          upper.style.width = s_box.style.width + "px";
          upper.style.left =  init_co[0] + "px";
          upper.style.top = init_co[1] + "px";
}

通过开发控制台,我可以检查 div 实际上是否已使用正确的 id 创建,但没有任何更改,因为它应该对样式属性进行更改。关于这个有什么想法吗?(请忽略此代码中未显示的变量,它们已正确实现)。

编辑:

该函数被调用。部分功能实际上正在工作。

4

2 回答 2

2

无论您在常规 javascript 中的问题的答案如何,我注意到您正在使用 jQuery 和普通旧 Javascript 的混合。既然您已经在使用 jQuery,那么您不妨使用它。(我知道,对吧?)

尝试这个:

function createDiv(id)
{
    $('<div></div>').attr('id',id).appendTo('body');
}

createDiv('upper_outer');

//I'm assuming this is created in response to some sort of event.
//Perhaps the event isn't being triggered?
//Are you sure all your variables are defined? - init_co and s_box
function /*ABSTRACTION*/(e)
{
    $('#upper_outer').css(
    {
        'display':'block',
        'position':'absolute',
        'height':$(document).height() - init_co[0] + 'px',
        'width':s_box.css('width'),
        'left':init_co[0] + 'px',
        'top':init_co[1] + 'px'
    });
}

请注意:每页只能有 1 个(一个!!!!)ID。ID 是唯一的。如果这个具有这个 ID 的 div 被多次创建,那么您可能没有改变您认为的 div 的样式。如果您打算创建多个这些 div,请改用“类”。如果你没有,也许你应该考虑在创建元素之前检查它是否存在?

//Inside createDiv()
if($('#'+id).length)) return;
于 2013-10-13T19:55:06.020 回答
0

那是因为你没有调用改变样式的函数。

无论如何,函数中还有另一个不存在的参数。谁是s_boxinit_col

试试这个代码,但首先添加参数:

function createDiv(id) {
      var temp = document.createElement('div');
      temp.setAttribute("id", id); 
      document.getElementsByTagName('body')[0].appendChild(temp);
}

createDiv('upper_outer');
addStyle();

function addStyle()
{

      var upper = document.getElementById("upper_outer");

      upper.style.display = "block";
      upper.style.position = "absolute";
      upper.style.height = $(document).height() - init_co[0] + "px";
      upper.style.width = s_box.style.width + "px";
      upper.style.left =  init_co[0] + "px";
      upper.style.top = init_co[1] + "px";
}

jsFiddle

于 2013-10-13T19:49:51.240 回答