【问题标题】:Variable by id and class type按 id 和类类型变量
【发布时间】:2017-11-24 20:42:38
【问题描述】:

如何知道包含document.getElementById()结果的变量的类型?

例如,在使用 alert(typeof variable) 时,我得到了对象,但我们在 document.getElementsByClassName[i] 中引用这些变量,如数组。

我想知道包含该值的变量的确切类型以及我们如何将其用作数组。

var cv = document.getElementById("xyz");
alert(typeof cv); //Alerts object

但我们将这些变量用作数组,例如..

var cv = document.getElementsByClassName("xyz");
cv[0].style.height="200px";    //use as array

在使用array.isarray() 进一步评估它时,结果证明它不是一个数组。那么我们如何才能像编写“用作数组”的代码一样将变量用作数组?

【问题讨论】:

  • 当您看到函数名称时,一个很好的提示是查看单数或复数形式:在 getElementById 中,元素是单数的,因此您直接拥有元素;但是在 getElementsByClassName 中,elements 是复数形式,所以你有一个元素的集合。
  • Array.isArray(cv) 应该告诉你你的对象是否是一个数组
  • 任何array在Javascript中都是object,意思是typeof [] === "object"

标签: javascript object


【解决方案1】:

欢迎来到 Stack Overflow。

typeof 为数组和对象返回对象,这意味着它是一种非原始数据类型。

如果你有兴趣确定它是否是一个数组,你可以像这样使用Array.isArray()

const values = [1,2,3]
if (Array.isArray(values))
  console.log("It's an array")  

请注意,我使用了console.log 而不是alert(),如果你有很多,它不会阻止执行。

【讨论】:

  • 先生,事实证明它不是一个数组......我们如何像数组一样使用它,然后在编写“用作数组”的代码中?
  • document.getElementsByClassName("xyz") 会给你一个数组,即使它们只有一个元素,它仍然是一个数组
  • Sir on running against console.log(Array.isArray(xyz)) 在控制台日志上打印错误,表明它不是一个数组。我有什么遗漏吗?
  • 奇怪,它似乎正在返回一个对象,以字符串值作为键,例如“0”、“1”、“2”等。巧合的是,javascript 允许您引用第一个元素作为“[0]”或“[“0”]”。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 2019-07-20
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多