使用Slickgrid,我试图使用setCellCssStyles方法设置一个单元格的CSS。
for (var rowIndx = 1; rowIndx < movmentRows.length; rowIndx++) {
grid.setCellCssStyles("disabled", {
rowIndx: {
san: "slick-cellreadonly",
ean: "slick-cellreadonly",
},
});
}
我知道这是因为我在for循环中使用了一个变量作为键,但我不明白如何让它工作。我试着用[rowIndx]替换rowIndx,但是我得到了语法错误,所以我认为我的JavaScript不是ES6。然后我又尝试了下面的方法,但也出现了语法错误。
遇到'['和预期的关键字或括号。
for(var rowIndx=1;rowIndx<movmentRows.length;rowIndx++){
var key = {};
grid.setCellCssStyles("natCol-greyed", {
key[rowIndx] : {
sourceAccountNational: "slick-cellreadonly",
excludeAccountNational: "slick-cellreadonly"
}
});
}
请提出建议。
如果你想创建一个对象,但又想使用一个变量作为键,语法如下。
let keyName = "foo"
let object = { [keyName]: "bar" }
// gives the object `{"foo": "bar}
在旧的javascript中,你必须在创建对象后再分配给一个键。
let keyName = "foo"
let object = {}
object[keyName] = "bar"
另外,当我可以使用迭代器时,我尽量不做 "手动 "循环。它比 "手动 "循环更不容易出错,而且允许你使用不同类型的集合,而不仅仅是数组,所以它更灵活。"手动 "循环主要有两种方法。
A for … of
循环。
let collection = ["a", "b", "c"]
for (let value of collection) {
console.log("value:", value)
}
// if you also want the index
for (let [index, value] of collection.entries()) {
console.log("value and index:", value, index)
}
// or _just_ the indexes (note this skip empty values in sparse arrays)
for (let index of collection.keys()) {
console.log("index:", index)
}
使用 forEach
:
collection.forEach((item, index) => console.log(item, index))
这两种方法的效果通常差不多,但在以下情况下: for … of
循环更接近于 "手动 "循环。然而, forEach
是比较老的,所以可能会有更多的地方。另外,看看类似的 map
.
如果 movementRows 是一个数组,你可以使用 for...的循环,就像这样。
for (const [index, row] of movmentRows.entries()) { //index is the index of each itteration and row is the value
grid.setCellCssStyles("disabled", {
[row]: {
san: "slick-cellreadonly",
ean: "slick-cellreadonly",
},
});
}
要把一个对象的键设置为变量 你可以把它放在括号里
注意for...of循环。在IE中不支持。