Javascript Jquery更改id,不工作
我正在使用以下代码将div的id更改为其他内容,但它不起作用???有人知道为什么吗 if语句返回true,因此id为'id'的div确实存在,但它没有运行更改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
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>