【问题标题】:Element not selected as expected未按预期选择元素
【发布时间】:2017-09-18 17:59:31
【问题描述】:

我正在尝试使用 AngularJS 应用程序中的以下 sn-p 代码使用 JavaScript 选择一个元素。

var assicurazione = document.getElementsByClassName("assicurazione");
var aLength = assicurazione.length;

for(var key in assicurazione){
   console.log("key: ", key);
   console.log("assicurazione[key] ", assicurazione[key]);
}

console.log("assicurazione element: ", assicurazione);
console.log("assicurazione.length: ", aLength);

for(var a = 0; a < aLength; a++){
   console.log("Element: ", assicurazione[a]); // not firing
   console.log("a value: ", a); // not firing
}

console.log 的输出如下:

循环没有按预期工作,因为长度为 0,但元素有一个长度属性,在这种情况下,它设置为 16,所以我不知道为什么它不会循环遍历元素。

谁能帮帮我?

【问题讨论】:

  • 循环正常,你有什么问题?
  • assicurazione 元素的行为不符合预期。
  • '如预期'是什么意思?您对它的工作方式有何期望?
  • 一切正常,如您所见:jsfiddle.net/zt1cpa9q您的问题是什么?
  • 上传更多图片和代码

标签: javascript html angularjs dom


【解决方案1】:

当我在此页面的上下文中运行您的代码时——但更改了类名——它按预期对我有用。我怀疑您的代码可能还有其他问题。你试过angular.element吗?

https://docs.angularjs.org/api/ng/function/angular.element

var assicurazione = document.getElementsByClassName("module");
var aLength = assicurazione.length;

console.log(assicurazione, aLength);

for(var a = 0; a < aLength; a++){
   console.log(a);
}

【讨论】:

  • 感谢您的回答,我已经尝试使用 angular.element 包裹元素,但运气不佳
  • 你的代码中是否有其他东西改变了一些原生原型?我想知道您的Array.prototypeNodeList.prototype 是否可能已被其他代码更改?因为正如其他人所说,您显示的代码工作正常。这几乎可以肯定地指向其他问题。
【解决方案2】:

如果你想访问每个元素,你的循环需要看起来更像这样,忽略我对变量名所做的更改。

var elements = document.getElementsByClassName("mine");
var aLength = elements.length;

console.log(aLength);
console.log(elements);

for(var a = 0; a < aLength; a++){
   console.log(elements[a]);
}

查看working example on jsfiddle

【讨论】:

猜你喜欢
  • 2018-10-22
  • 2019-07-05
  • 2021-09-19
  • 2023-01-13
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多