元素不会在脚本执行

我试图得到一些元素的数据属性的时间定义,但是在创建对象时,该元素尚未加载(据我所知)。我的问题是什么是最好的(或任何)解决方案,因为我需要在两个不相互作用的独立函数中使用这个对象?元素不会在脚本执行

function Data_Num_Array(){ 

this.data_num_array=$("*[data-num]");

}

Data_Num_Array.prototype.get_data_num_array_element=function(string_val){

var data_num_of_element;

for(var i=0;i<this.data_num_array.length;i++){

if(this.data_num_array[i].id===string_val){

data_num_of_element=$(this.data_num_array[i]).attr("data-num");

break;

}

}

return data_num_of_element;

};

function call_me(){

console.log(obj.get_data_num_array_element("div"));

}

如果在这里有语法错误,这不是一个问题,这只是针对问题的情况。

var obj=new Data_Num_Array(); 

$(document).ready(function(){

console.log(obj.get_data_num_array_element("div"));

});

$("#click").click(function(){

console.log(obj.get_data_num_array_element("click"));

});

<html>

<head>

</head>

<body>

<div id="div" data-num="1"></div>

<button id="click" data-num="2"></button>

</body>

</html>

回答:

如果你是新来的JavaScript,它可能是值得的作用域阅读了:MDN: Variable Scoping

总之,需要在两个功能obj,但我们可以利用作用域来帮助我们确保两个$(document).ready$("#click")将不得不obj访问。另一方面,obj需要等到文档准备就绪。我们可以与你使用的$(document).ready回调函数实例Data_Num_Array推迟。

随着比特重新排列的:

function Data_Num_Array(){ 

this.data_num_array=$("*[data-num]");

}

Data_Num_Array.prototype.get_data_num_array_element=function(string_val){

var data_num_of_element;

for(var i=0;i<this.data_num_array.length;i++){

if(this.data_num_array[i].id===string_val){

data_num_of_element=$(this.data_num_array[i]).attr("data-num");

break;

}

}

return data_num_of_element;

};

$(document).ready(function(){

var obj=new Data_Num_Array();

console.log(obj.get_data_num_array_element("div"));

$("#click").click(function(){

console.log(obj.get_data_num_array_element("click"));

});

});

现在,我们正在等待建立新Data_Num_Array和click事件。

此外,您的点击处理程序中有一个小错误,您在此调用obj.get_data_num_array_element("button")而不是obj.get_data_num_array_element("click")。 (你给了你<button>的“咔嚓”声。一个id)

在更加刚愎自用的一面,可以考虑使用驼峰的变量名。输入较少的字符。 ;)

以上是 元素不会在脚本执行 的全部内容, 来源链接: utcz.com/qa/266755.html

回到顶部