【问题标题】:document.querySelectorAll(variable class)document.querySelectorAll(变量类)
【发布时间】:2015-02-25 04:36:48
【问题描述】:

我只是发现 document.getElementsByClassName() 不适用于 IE8。出于这个原因,我想使用 document.querySelectorAll(),但我真正的问题是类名出现在一个变量中,并且无法获得函数的结果。像这样:

var linea = document.querySelectorAll(revisados[i].value);

我的函数是由 onchange(value) 的复选框触发的,并且在执行时检查 querySelectorAll 的参数值失败。我试过了:

<input type="checkbox" value="1" onchange="javascript:name(this)" /> 

该值是许多其他元素的类。 还有 JS:

function name(param){
var className=param.value;
var class2 = "."+class;
var linea = document.querySelectorAll("."+param); //doesn't work
var linea = document.querySelectorAll("."+className); //doesn't work
var linea = document.querySelectorAll("."+className.value); //doesn'twork
var linea = document.querySelectorAll(class2); //doesn'twork
var linea = document.querySelectorAll(String(class)); //doesn't work
}

请有任何建议。非常感谢。

【问题讨论】:

  • 我不知道这是否是故意的,但您输入的是 onchage 而不是 onchange。此外,您不能使用class 作为javascript 变量名,因为它会产生Uncaught SyntaxError: Unexpected reserved word
  • 仅供参考,您的内联事件处理程序中的 javascript: 部分是完全没有必要的。我建议删除它,以免散布它是必需的错误印象。
  • 这不是故意的错误。我知道“class”是一个保留字,试着清楚地表达我的问题。这不是我真正的功能的代码,只是一个例子。
  • @h3g0r_:我们应该如何区分实际代码中的问题和示例中的问题?一个例子应该只复制你的实际问题,而不是引入新问题。
  • 你为什么还要尝试使用document.querySelectorAll("."+param);?你对连接一个 DOM 元素和一个字符串有什么期望? document.querySelectorAll("."+className.value); 类似。字符串没有 value 属性。我觉得你会从更新一些 JS 基础知识中受益。我的意思是,尝试一下是好的,但似乎你盲目地尝试了每一种可能的组合。也许退后一步阅读一些文档:developer.mozilla.org/en-US/docs/Web/API/Document/…

标签: javascript internet-explorer


【解决方案1】:

使用querySelector

function name(param){
var classValue=param.value;
linea = document.querySelector("."+classValue); 
console.log(linea.length)
}

IE8 也不允许 CSS 类以数字开头。

【讨论】:

  • 我也遇到了 SyntaxError。 :(
  • 你的 HTML 中是否有任何类名为 1 的元素?
  • 是的,当然。如果使用 getElementsByClassName() 在 IE9+ 上工作。问题是当我尝试使用 document.querySelectorAll(variable) 获取 de 元素时:(
  • querySelect 返回单个 DOM 元素,所以linea.length 在最好的情况下会返回undefined,在最坏的情况下会抛出运行时错误。
  • @h3g0r_: IE8 可能不允许 CSS 类名以数字开头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 2013-03-24
相关资源
最近更新 更多