在数组项上设置或获取文本 - javascript

时间:2018-03-19 22:03:11

标签: javascript jquery

我在页面上有5个div:<div class="cell"></div>。 我有那些&#39; divs&#39;存储在名为$cell的变量中... 所以,如果我是console.log($cell),我得到一个包含这5个div的数组。 如果我控制台.log($cell[2])我得到了第三个&#39; ...这一切都在世界上很好。

我的菜鸟问题是:为什么我不能设置 $cell[0].text('Title');

的文字

如果我给他们标题,我就不能 <{1}}

我收到错误&#34; $ cell [2] .text不是函数&#34;

如果它有助于我尝试使用来自对象的数据在for循环中设置文本

$cell[0].text();

我尝试使用.html()函数......没有骰子。

任何帮助将不胜感激。提前谢谢!

4 个答案:

答案 0 :(得分:0)

因为您正在尝试使用jQuery方法设置DOM对象内容。

相反,使用

create_table "reservation_resource_set_ups", force: :cascade do |t|
  t.integer "reservation_id"
  t.integer "resource_id"
  t.integer "set_up_id"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["reservation_id"], name: "index_reservation_resource_set_ups_on_reservation_id"
  t.index ["resource_id"], name: "index_reservation_resource_set_ups_on_resource_id"
  t.index ["set_up_id"], name: "index_reservation_resource_set_ups_on_set_up_id"
end

create_table "reservation_resources", force: :cascade do |t|
  t.integer "reservation_id"
  t.integer "resource_id"
  t.text "comments"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["reservation_id"], name: "index_reservation_resources_on_reservation_id"
  t.index ["resource_id"], name: "index_reservation_resources_on_resource_id"
end

create_table "reservations", force: :cascade do |t|
  t.string "name"

  ...

  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["end_date"], name: "index_reservations_on_end_date"
  t.index ["repeat_end_date"], name: "index_reservations_on_repeat_end_date"
  t.index ["start_date"], name: "index_reservations_on_start_date"
end

create_table "resources", force: :cascade do |t|
  t.string "name"
  t.text "description"
  t.string "resource_type"
  t.text "location"
  t.integer "quantity", default: 1
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

create_table "set_ups", force: :cascade do |t|
  t.string "name"
  t.text "instructions"
  t.string "image"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

OR

$cell[0].textContent=""; // [0] is the dom object 

但在你的情况下试试

$cell.eq(0).text(""); eq(0) is the jQuery object 

使用DOM对象:

$(".cell").each(function(i) {
  $(this).text($table[i].name); // $(this) is the current jQuery object
});

答案 1 :(得分:0)

对象$cell不是常规数组,它是一个恰好支持索引的jQuery对象。但是如果使用$cell[i]对其进行索引,则结果是DOM对象,而不是jQuery对象,并且DOM对象不知道jQuery .text()是什么。

可能的解决方法是再次应用$(),这将有效:

$($cell[i]).text("hello");

另一个同样好的方法是使用索引,但使用jQuery .eq()确实返回一个jQuery对象:

$cell.eq(i).text("hello");

答案 2 :(得分:0)

您也可以使用innerHTML

var $cell = $('.cell');
for(var i = 0; i<$cell.length;i++) {
    $cell[i].innerHTML = "foo " + i;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>

答案 3 :(得分:0)

有点复杂。您可以使用$ .makeArray()将JQ​​uery对象转换为数组;并使用$()将数组中的每个元素组合成QUery,以便使用text()方法。

$(document).ready(function() {

var cell = $(".cell");
//convert jquery object into array

var arr = $.makeArray(cell);

console.log($(arr[0]).text());


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>