【问题标题】:appendChild() and createElement() Javascript questionappendChild() 和 createElement() Javascript 问题
【发布时间】:2011-08-04 03:38:47
【问题描述】:

当我在代码中使用 appendChild() 和 createElement() 时,已定义 CSS ID 的后续样式不会应用。有人能告诉我为什么吗?这是我的代码:

function searchDone(results) {
    var result = null;
    var parent = document.getElementById('postWrap');
    var child = null;
    parent.innerHTML = '';
    var insertHTML =" ";

    //Paginating Results Links
    resultNum = results.SearchResponse.Web.Total;
    resultNum = resultNum/10;
    child = document.createElement('div');
    child.id = "paging";
    if(results.SearchResponse.Web.Offset != 0){
        insertHTML ='<span><a class="jsonp b" href="#" rev="'+(results.SearchResponse.Web.Offset-10)+'">&lt;</a></span>';
    }
    if(results.SearchResponse.Web.Offset == 0){
        insertHTML += '<span>1</span>';
    }else{
        insertHTML +='<span><a class="jsonp" href="#" rev="0">1</a></span>';
    }
    for(var i = 1; i <= resultNum; i++){
        if((results.SearchResponse.Web.Offset/10) == i){
            insertHTML += '<span>'+(i+1)+'</span>';
        }else{
            insertHTML += '<span><a class="jsonp b" href="#" rev="'+i*10+'">'+(i+1)+'</a></span>';
        }
    }
    if(results.SearchResponse.Web.Total - results.SearchResponse.Web.Offset > 10){
        insertHTML += '<span><a class="jsonp b" href="#" rev="'+(results.SearchResponse.Web.Offset+10)+'">&gt;</a></span>';
    }
    child.innerHTML = insertHTML;
    parent.appendChild(child);

然后我有一些其他代码通过 API 到 Bing 处理我的搜索查询(只是因为 Google 现在收费...)

接下来,我用同样的方法插入另一个div:

//Insert Paginating results again
    child = null;
    child = document.createElement('div');
    child.innerHTML = insertHTML;
    child.id = "searchResultsPages";
    parent.appendChild(child);

现在我想对这些数字应用一些样式。但是,当我将样式应用于 searchResultsPage 时,例如

#searchResultsPages{
 float: right;
}

我不明白正在传递的风格。奇怪的是,如果我只插入这两个元素中的一个,一切都会按计划进行,并且样式显示得很好。问题是我希望页面显示在搜索的顶部和底部。

任何想法为什么会发生这种情况?我认为这可能与一个元素被使用两次有关,但我不知道如果对象不同,为什么这会产生任何影响。

谢谢。

【问题讨论】:

  • "searchResultsPages" !== "searchResultsPage"
  • 对不起,我应该复制粘贴的。 ID searchResultsPage 和 searchResultsPages 之间的不一致实际上是不存在的。对不起!!!!我已更改帖子以反映这一点
  • 你怎么知道样式不适用?您是否尝试过设置明亮的背景颜色?由于生成的 HTML 结构,float:right 的行为可能与您预期的不同。
  • 我知道它们不适用,因为当我取下这两个 div 之一时,样式完美适用。此外,在 Firebug 中,它不是“链接”的(因为缺乏更好的解释)
  • 大家好,我只是将第一个评论的人标记为答案。事实证明没有什么问题,只是 .css 文件损坏了,必须恢复。很奇怪,我知道。不过,谢谢一百万,如果这个问题让您感到悲伤,我们深表歉意!不过,你确实为我指明了正确的方向。

标签: javascript css appendchild javascript-objects createelement


【解决方案1】:
child.id = "searchResultsPages";

#searchResultsPage{

看到有什么问题吗? :)

喜欢s

【讨论】:

  • 对不起,伙计们,我应该从我的代码中复制并粘贴该 CSS。这实际上不是问题。这是代码 #searchResultPages{ float:right; 的粘贴。 }
【解决方案2】:

ID 在页面中应该是唯一的,因此如果您有两个 id="searchResultsPage" 的元素,则行为可能会有些混乱,并且 HTML 无效。相反,如果有多个元素,请使用 class="searchResultsPage"。

其他评论者指出的缺失 's' 的问题也很重要,尽管希望这只是问题中的一个错字。

【讨论】:

  • 实际上我需要两个 DIV 的行为不同,因此一个 div 具有 ID 分页(只是我目前选择的),另一个 searchResultsPages(请参阅代码)以便页面有效并且因此底部和顶部分页链接的行为可能不同
猜你喜欢
  • 1970-01-01
  • 2011-02-23
  • 2011-10-08
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多