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