在javascript变量上调用jquery方法不起作用

时间:2019-05-09 19:25:01

标签: javascript jquery

我正在尝试制作一个js变量,然后在该变量之外运行一个jquery方法。

for (var i = 0; i < $(".header").length; i++) {
  let header = $(".header").get( i );
  header.text("cool");
}

但是当我在变量上运行该方法时,我得到一个错误。

Uncaught TypeError: header.text is not a function

我尝试将这两条线合并在一起,但这就是我能想到的。 js文件肯定已连接到页面。 头文件类来自我的html文件,我尝试了一些console.log(),它肯定是在选择元素。

我期望这段代码用html中的.header类更改两个元素,使之说很酷,但除了控制台中显示的错误消息外,什么都没有改变。

2 个答案:

答案 0 :(得分:1)

正如您在documentation for jQuery .get()方法中看到的那样,.get()方法授予对每个jQuery对象基础的DOM节点的访问权限。而且DOM节点没有任何text()方法。

因此,您只需要再次将header包裹在$()中以使其成为jQuery对象:-

for (var i = 0; i < $(".header").length; i++) {
  let header = $(".header").get(i);
  $(header).text("cool");
}

尽管有一种简单的方法可以执行您想要的操作:-

$(".header").text('cool');

答案 1 :(得分:0)

.get(i)返回jQuery集合中第i个元素的基础DOM元素。要获取jQuery对象,请使用.eq(i)

因此应该是:

let header = $(".header").eq(i);

header.innerText = "cool";