Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery更改id,不工作_Javascript_Jquery - Fatal编程技术网

Javascript Jquery更改id,不工作

Javascript Jquery更改id,不工作,javascript,jquery,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

我正在使用以下代码将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)
}
很抱歉有人试图回答这个问题,我犯了一个小错误,在一个函数中输入了一个错误的变量,它把一切都搞砸了,所以上面的脚本实际上没有什么问题。对不起:但是谢谢你的帮助

检查页面上是否已经存在id变量值为的元素。我怀疑在代码运行时没有这样的元素。那可能是因为

id的价值并不是你想象的那样; 代码在目标元素成为DOM一部分之前的某个时间点运行 如果我有一个id为original的div,则可以这样做:


if语句的条件是否计算为true?为什么要声明两次新的\u id?所有变量是否都包含预期值?如果$+id.length>0包含预期值,那么id从何而来?第二次声明var new_id时,您重写了第一次声明。你的意思是新的吗;?请提供一个演示,而不是一段不运行的代码。这里已经丢失了一些位,我们不知道这是否是您的实际问题,或者仅仅因为您在上下文之外发布了代码片段,例如行、列、id和grav_tree没有定义。您应该发布一个独立的示例。当然,我们可以运用常识,但如果我们不必猜测或假设的话,这更容易帮助我们。关于费利克斯的评论,我可以建议你读一读吗?我想也许你没有正确地检查它。当然,您还没有发布您认为可以验证某个元素的id值与该变量的值相同的代码,因此无法确切说明问题所在。但我有一个id为id的div,它正在显示警报,因此它必须存在,因此$+id.attrid,new_id;那么你得到了什么错误?调试工具向您展示了什么?id是字面上的id,还是我误解了你?好吧,我现在不得不道歉,我派你去寻找一些不存在的东西,我发现问题是:我把错误的变量放进了一个函数:,我太愚蠢了,但谢谢你的帮助:
if($("#"+id).length > 0){
$(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);
    }
});
<div id="original">
</div>