亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基于類腳本遞增 HTML 標識

基于類腳本遞增 HTML 標識

智慧大石 2022-09-23 21:34:52
使用腳本或jquery,我如何為具有相同html類的項目增加HTML ID。例如,我有3個元素,類為“form_id”。我希望每個相應元素的 id 顯示為表單-0-標識表單-1-標識表單-2-標識我正在嘗試這個 - 但它不起作用:var list = $(".formset_id");  var q = 0for (var item in list) {   var newID='form'+q+'-id';   $(this).attr('id',newID);   q++;}有什么想法嗎?
查看完整描述

3 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

您可以使用 jQuery 每個函數來迭代 div。


.html()調用只是為了讓您能夠明顯看到結果。刪除它并將其替換為你自己的代碼。每個回調函數的第一個參數是索引,第二個參數是值。


注意:對于您要嘗試執行的任何操作,都有更好的解決方案。這樣的設置通常是不必要的,并且表明一個迂回的方法,無論你試圖實現什么,很可能是不可靠的。id


var list = $(".formset_id");  


list.each(function(q){

  var newID = 'form'+q+'-id';

   $(this).attr('id',newID);

   $(this).html(q);

})

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

詳細說明為什么你的代碼不能按原樣工作,以及為什么你不應該使用for-in:

(如果你知道你在做什么并且必須支持較舊的瀏覽器,那么它是一個很好的窮人的對象[key]:對于較舊的瀏覽器來說,value迭代器)

for-in循環遍歷對象的所有鍵,而不是值。您不應該使用 for-in,因為它還會迭代 jQuery 擴展的內置函數(如 、 、 等)。它還破壞了瀏覽器優化,并且閱讀起來并不干凈。

你只需要它作為一個窮人在舊的舊版瀏覽器中的for-for-為此,您必須添加以確保它不是內置方法的鍵,并且在jQuery對象的情況下,您還必須排除和 ,它們被更新為屬性以允許它像數組一樣和類似DOM。attreachmaphtml.hasOwnPropertylengthprevObject


var list = $(".formset_id");  

for (var item in list) {

   var newID='form'+item+'-id';

   // skip over special jQuery built-ins unrelated to actual contained elements

   if(!list.hasOwnProperty(item) || item==='length' || item==='prevObject')

     continue;


   $(list[item]).attr('id',newID);

   $(list[item]).html(item);

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>


查看完整回答
反對 回復 2022-09-23
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

它不起作用,因為你還沒有掌握一些語言基礎知識,比如如何工作,以及循環是如何工作的。thisfor-in


這是一個非jQuery版本,它可以做你想要的,而不需要大量的外部依賴項。


document.querySelectorAll(".formset_id")

  .forEach((el, i) => el.id = `form${i}-id`);

.formset_id {

  width: 50px;

  height: 50px;

}


#form0-id {

  background: red;

}


#form1-id {

  background: green;

}


#form2-id {

  background: blue;

}

<div class="formset_id"></div>

<div class="formset_id"></div>

<div class="formset_id"></div>


但是,要使實際代碼正常工作,它將如下所示:


var list = $(".formset_id");  

var q = 0

for (var item in list) {

   var newID='form'+q+'-id';

   $(list[item]).attr('id',newID);

   q++;

}

離jQuery一步,你可以直接設置元素的屬性。.id


var list = $(".formset_id");  

var q = 0

for (var item in list) {

   var newID='form'+q+'-id';

   list[item].id = newID;

   q++;

}

然后循環體可以在一行中完成。


var list = $(".formset_id");  

var q = 0

for (var item in list) {

   list[item].id = 'form' + q++ + '-id';

}

在列表中循環也會更好,消除變量。for-ofObject.entriesq


var list = $(".formset_id");  


for (var [i, item] of Object.entries(list)) {

   item.id = 'form' + i + '-id';

}

使用字符串插值也很好。


var list = $(".formset_id");  


for (var [i, item] of Object.entries(list)) {

   item.id = `form${i}-id`;

}

你可以看到,唯一的jQuery是DOM選擇,所以為什么要打擾呢?


var list = document.querySelectorAll(".formset_id");  


for (var [i, item] of Object.entries(list)) {

   item.id = `form${i}-id`;

}

現在,我們幾乎與頂部的演示完全相同,只是我們使用的是迭代而不是迭代。for-of.forEach


查看完整回答
反對 回復 2022-09-23
?
MM們

TA貢獻1886條經驗 獲得超2個贊

您可以使用 attr(屬性名稱,函數),它將循環訪問整個集合,并公開每次迭代的索引

$(".js-form").attr('id', i => `form-${i}-id`);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://code.jquery.com/jquery-2.2.4.js"></script>

<form action="/" class="js-form">Form 1</form>

<form action="/" class="js-form">Form 2</form>

<form action="/" class="js-form">Form 3</form>

<form action="/" class="js-form">Form 4</form>

<form action="/" class="js-form">Form 5</form>


查看完整回答
反對 回復 2022-09-23
  • 3 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號