2016-09-14 87 views
0

我正在嘗試根據具有特定class的字段的id & name創建變量。但是我遇到了一些麻煩,因爲多年的jQuery,我的JS有點生疏。循環到變量然後打印變量

波紋管是我的代碼和here是js小提琴它。

所以第一關我檢查了click然後如果類invalid存在,那麼運行一個循環,發現有類invalid每個元素的name attribute & ID attribute

然後,它將其添加到array和我打印array

夠簡單,但它似乎沒有打球。我在這裏指責多年使用jQuery,因爲我應該能夠彈出一些簡單的JS中的循環沒有問題。但是我很茫然,似乎無法找到一個錯誤,爲什麼我沒有打印到控制檯日誌。

document.getElementById("submiter").onclick = function() { 
 
    errorLoop(); 
 
}; 
 

 
function errorLoop() { 
 
    var errClass = element.classList.contains("invalid"), 
 
     runner = document.document.getElementsByClassName("invalid"), 
 
     dataL = []; 
 

 

 
    if (errClass) { 
 

 
     for (var i = 0; i < runner.length; i++) { 
 
     var errName = runner.getAttribute("name"), 
 
      errId = runner.getAttribute("id"); 
 

 
     dataL.push("Name: " + errName + " - ID: " + errId +", "); 
 
     } //End for 
 

 
     dataL.toString(); 
 

 
     console.debug(dataL); 
 

 
     dataLayer.push({ 
 
     "validationError": "datal" 
 
     }); 
 

 
    } //End if 
 
    } //End errorLoop
<input type="radio" id="tiMs" name="ti" value="Ms" tabindex="16" class="invalid"> 
 
<input type="radio" id="tiMiss" name="ti" value="Miss" tabindex="17" class="invalid"> 
 
<input type="radio" id="tiMiss" name="hol" value="Miss" tabindex="17" class="invalid"> 
 
<a href="#" id="submiter"> 
 
    <strong>clickit</strong> 
 
</a>

+0

您對分發線語法錯誤。 –

+0

從這一行刪除'+'號 'Distribute(dataL.push(「Name:」+ errName +「 - ID:」+ errId +)); ' 即使它成爲「'分配(dataL.push(」名稱:「+ errName +」 - ID:「+ errId));'」 –

回答

1

更改代碼

function foo() { 
 
\t \t errorLoop(); 
 
\t } 
 

 
\t function errorLoop() { 
 
\t \t var runner = document.getElementsByClassName("invalid"), dataL = []; 
 
\t \t 
 

 
\t \t if (runner) { 
 

 
\t \t \t for (var i = 0; i < runner.length; i++) { 
 
\t \t \t \t var errName = runner[i].getAttribute("name"), errId = runner[i] 
 
\t \t \t \t \t \t .getAttribute("id"); 
 

 
\t \t \t \t dataL.push("Name: " + errName + " - ID: " + errId); 
 
\t \t \t } //End for 
 

 
\t \t \t dataL.toString(); 
 
      console.log(dataL) 
 

 
\t \t \t console.debug(dataL); 
 

 
\t \t \t 
 

 
\t \t } //End if 
 
\t } //End errorLoop
<input type="radio" id="tiMs" name="ti" value="Ms" tabindex="16" 
 
\t \t class="invalid"> 
 
\t <input type="radio" id="tiMiss" name="ti" value="Miss" tabindex="17" 
 
\t \t class="invalid"> 
 
\t <input type="radio" id="tiMiss" name="hol" value="Miss" tabindex="17" 
 
\t \t class="invalid"> 
 
\t <a href="#" id="submiter" onclick="foo()"> <strong>clickit</strong> 
 
\t </a>

+0

點擊功能是有一個原因,因爲它不能在HTML但認爲看過它 – DCdaz

+0

你需要什麼@DCdaz。或者這對你工作正常 – Abhijeet

+0

你能解釋你改變了什麼,問題是什麼?只是發佈代碼對其他訪問者不是很有用。 –

0

你可以試試下面的變化:根據您的要求

function errorLoop() { 
    var errClass = element.classList.contains("invalid"), 
    runner = document.getElementsByClassName("invalid"), // removed document 
    dataL = []; 


if (errClass) { 

    for (var i = 0; i < runner.length; i++) { 
    var errName = runner[i].getAttribute("name"), //used index 
     errId = runner[i].getAttribute("id"); 

    //.... 
    } //End for 

} 

    //.... 
} 
0

試試這將可以幫助你

$(document).ready(function(){ 
var arrNumber = new Array(); 
$('#submiter').on('click',function(){ 
    $('input[type=radio]:checked').each(function(){ 
    if($(this).attr('class')=='invalid'){ 
     arrNumber.push($(this).attr('id')+' => '+$(this).attr('name')); 
    } 
    }); 
    console.log(arrNumber); 
    }); 

}); 
+0

這就是jQuery沒有Javascript – DCdaz