Jquery更改id,无法正常工作

时间:2012-03-08 22:10:24

标签: javascript jquery

我使用以下代码将div的id更改为其他内容,但它不起作用???有谁知道为什么?

if语句返回true,所以id为'id'的div确实存在,但它没有运行更改id的实际行

function grav_treasure(){
var i=0;
for(i=0;i<=treasure_list.length;i++){
    var id = treasure_list[i];
    if($("#"+id).length > 0){
        var current_top = document.getElementById(id).style.top;
        var current_top = parseFloat(current_top);
        var id_split = id.split("_");
        var row = id_split[2];
        var row = parseFloat(row) + 1;
        var col = id_split[5];
        var col = parseFloat(col);
        var block_id = "row_" + row + "_col_" + col + "_type_grass";

        if($("#"+block_id).length > 0){
            if(document.getElementById(block_id).getAttribute('class')=="block"){

            }
            else{
                var rand_id=Math.floor(Math.random()*100);
                var new_id = "treasure_grass_"+row+"_"+rand_id;
                var new_id = new_id + "_col_" + col;
                treasure_list.push(new_id);
                if($("#"+id).length > 0){
                    alert(new_id);
                    $("#"+id).attr('id',new_id);
                    grav_treasure_tree(id, row);
                }
            }
        }
        else{
            var rand_id=Math.floor(Math.random()*100);
            var new_id = "treasure_grass_"+row+"_"+rand_id;
            var new_id = new_id + "_col_" + col;
            treasure_list.push(new_id);
            if($("#"+id).length > 0){
                alert(new_id);
                $("#"+id).attr('id',new_id);
                grav_treasure_tree(id, row);
            }
        }

    }
}
setTimeout("grav_treasure()",100)
}

对于那些试图回答这个问题的人,很抱歉,我通过将一个错误的变量输入到一个搞砸了所有内容的函数中犯了一个小错误,所以上面的脚本实际上没有任何问题。对不起:(但感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

if($("#"+id).length > 0){

检查页面上是否已有一个元素,其值为&#34; id&#34;变量。我怀疑代码运行时没有这样的元素。那可能是因为

  • &#34; id&#34;的价值不是你认为的那样;
  • 代码在目标元素是DOM
  • 的一部分之前的某个时间点运行

答案 1 :(得分:1)

$(document).ready(function(){
    var id = "original";
    var row = "some_row";
    var col = "some_col"
    var treasure_list = [];
    var grav_treasure_tree = function(id, row){
        // some code
    }

    var rand_id=Math.floor(Math.random()*100);
    var new_id = "treasure_grass_"+row+"_"+rand_id;
    new_id = new_id + "_col_" + col;
    treasure_list.push(new_id);
    if($("#"+id).length > 0){
        alert(new_id);
        $("#"+id).attr("id",new_id);
        grav_treasure_tree(id, row);
    }
});

如果我有一个ID为original的div:

,那就有效
<div id="original">
</div>