Javascript 使用jquery时未检测到全局变量,但没有错误
您好:)这似乎是个愚蠢的问题,但我的全局变量在jquery函数中不起作用 在这里,我在函数外部创建了一个变量,并将其命名为“css”: 在声明后面的函数中,我在jquery函数中调用了“css”变量:Javascript 使用jquery时未检测到全局变量,但没有错误,javascript,jquery,css,web,frontend,Javascript,Jquery,Css,Web,Frontend,您好:)这似乎是个愚蠢的问题,但我的全局变量在jquery函数中不起作用 在这里,我在函数外部创建了一个变量,并将其命名为“css”: 在声明后面的函数中,我在jquery函数中调用了“css”变量: function create() { var Elements = ""; var divId = "num"; for (var i = 0 + initial; i < 7 + initial; i++) { divId += i; Elements += '<di
function create() {
var Elements = "";
var divId = "num";
for (var i = 0 + initial; i < 7 + initial; i++) {
divId += i;
Elements += '<div id=' + divId + '>' + i + '</div>';
$('<style>' + '#' + css + '</style>').appendTo(document.head);
}
var container = document.getElementById("row");
container.innerHTML = Elements;
}
函数创建(){
var元素=”;
var divId=“num”;
对于(变量i=0+初始值;i<7+初始值;i++){
divId+=i;
元素+=''+i+'';
$(''+''#'+css+'').appendTo(document.head);
}
var container=document.getElementById(“行”);
container.innerHTML=元素;
}
但是,输出的样式并不像它应该的那样。奇怪的是,我也没有得到任何未定义变量的错误。
当我将变量声明放入函数create()
中时,一切正常。但我不希望这样,因为我会有多个类似于函数create()
的函数,如果只声明一次变量,效率会更高
我怀疑这是因为jquery的性质?有什么帮助吗 克里斯·李的评论似乎解决了你的问题,但没有找到答案,这个问题似乎也不会结束 如果Chris Li决定创建一个答案,我将删除我的答案 在他的回答中,我强烈建议不要命名变量
元素
。JavaScript中的变量不应以大写字母开头。要查看变量命名约定,请查看本文档中标题为“变量名称”的部分
我总是发现在代码段中更容易看到代码,所以我在下面创建了一个代码段来演示您的问题
//对不变的变量使用const,对局部变量使用let,而不是var
//如果您的浏览器环境支持它。
const css='{width:200px;字体系列:“Futura”,无衬线;文本对齐:居中;flex-grow:1;flex-basis:0;padding:8px 10px;}';
函数create(){
//我不知道'initial'指的是什么,所以我只在这里使用占位符。
初始值=0;
让元素=“”;
设divId='num';
对于(设i=0+初始值;i<7+初始值;i++){
divId+=i;
元素+=''+i+'';
//上述行也可以使用模板文本编写。
//元素+=`${i}';
$(''+''#'+divId+css+'').appendTo(document.head);
}
const container=document.getElementById('row');
container.innerHTML=元素;
}
//调用create函数以查看它的操作。
创建()代码>
看起来像您添加的{…}
样式,您确定它在没有id的情况下工作吗?@ChrisLi oops我忘记了“divId”。在我添加它之后,它就工作了。非常感谢你!
function create() {
var Elements = "";
var divId = "num";
for (var i = 0 + initial; i < 7 + initial; i++) {
divId += i;
Elements += '<div id=' + divId + '>' + i + '</div>';
$('<style>' + '#' + css + '</style>').appendTo(document.head);
}
var container = document.getElementById("row");
container.innerHTML = Elements;
}