2016-02-17 39 views
1

這是元素的樣子從控制檯:爲什麼jQuery將這個屬性顯示爲undefined?

<input type="text" size="20" tabindex="3" id="txtR7163776" name="txtR7163776" selectorviewid="4149027" viewpageid="4877455" class="requiredInput" onfocus="new AutoSuggestControl(this, 4148821, 4149027);" matchfield="name" matchrule="ST" suggtype="rObj" ismultiple="false" autocomplete="off" filtername="R511444" filtervalue="-1"> 

我試圖刪除attribtes filternamefiltervalue

我的代碼:

$(document).ready(function(){ 
    var input = $("#txtR7163776"); 
    var attrA = input.attr("filtername"); 
    var attrB = input.attr("filtervalue"); 
    console.log(attrA, attrB); 
    input.removeAttr("filtername"); 
    input.removeAttr("filtervalue"); 
}); 

attrAattrB都出現了通過控制檯爲未定義...我缺少什麼嗎?

更新的代碼:

$(document).ready(function(){ 
    var input = $("#txtR7163776"); 
    console.log(input.length); //1 

    var attrA = input.attr("filtername"); 
    var attrB = input.attr("filtervalue"); 
    console.log(attrA, attrB); //showing undefined undefined in the console  

    input.removeAttr("filtername"); 
    input.removeAttr("filtervalue"); 

    var payroll = $("div[name='Payroll']"); 

var timekeep = $("div[name='Timekeeping']"); 

var benefits = $("div[name='Benefits']"); 

var HRIS = $("div[name='HRIS']"); 

payroll.hide(); 
timekeep.hide(); 
benefits.hide(); 
HRIS.hide(); 


console.log("A"); 
$("select[name='oppty_type']").click(function(){ 
    console.log("B"); 
    var isPay = false; 
    var isTime = false; 
    var isBene = false; 
    var isHris = false; 
    var isPremium = false; 
    var isPremiumPlus = false; 
    payroll.hide(); 
    timekeep.hide(); 
     benefits.hide(); 
    HRIS.hide(); 


    var multi = []; 
    multi = $("select[name='oppty_type']").val(); 
    console.log(multi); 
    for(var a = 0; a < multi.length; a++){ 
     if(multi[a] == 4143371){ 
      isPay = true; 
     } 
     if(multi[a] == 4143372){ 
      isTime = true; 
     } 
     if(multi[a] == 4143370){ 
      isHris = true; 
     } 
     if(multi[a] == 7457612){ 
      isBene = true; 
     } 
     if(multi[a] == 58318982){ 
      isPremium = true; 
     } 
     if(multi[a] == 58318983){ 
      isPremiumPlus = true; 
     } 
    } 

    if(isPay){ //payroll 

     payroll.show(); 


    } 
    if(isTime){ //timekeeping 

     timekeep.show(); 


    } 
    if(isHris){ //HRIS 

     HRIS.show(); 


    } 
    if(isBene){ //Benefits 

     benefits.show(); 



    } 
    if(isPremium){ //bundle premium 

     payroll.show(); 


     timekeep.show(); 


     benefits.show(); 



    } 
    if(isPremiumPlus){ //bundle premium plus 

     payroll.show(); 


     timekeep.show(); 


     benefits.show(); 


     HRIS.show(); 

    } 

    }); 
    }); 
+0

你能做一個片段? –

+1

適合我的作品:http://jsbin.com/hadukojifi/edit?html,js,console,output –

+1

'attrA.removeAttr(「filtername」);'沒有任何意義。簡化,與「R511444」相同.removeAttr(「filtername」);' –

回答

2

下將無法正常工作:

attrA.removeAttr("filtername"); 
attrB.removeAttr("filtervalue"); 

因爲你在一個attrAattrB,這是string操作它們。上述聲明確定了一個大致的意思少:

"R511444".removeAttr("filtername"); 
"-1".removeAttr("filtername"); 

你必須做的:

input.removeAttr("filtername"); 
input.removeAttr("filtervalue"); 

但在控制檯中我得到兩個attr值:

輸出:http://jsbin.com/hadukojifi/edit?html,js,console,output

+0

非常好。讓我試試看...我正在自定義一個名爲Rollbase的現有平臺,以從保持數據正確顯示的字段中刪除這些屬性,我想知道是否還有其他東西我沒有看到? –

+2

刪除屬性可能沒有你所期望的效果。很可能無論屬性在刪除它們時發生了什麼,都會導致X/Y問題。 –

+0

你需要告訴我們完整的代碼來告訴你缺少的東西。 ':''這樣我們可以更好地幫助你。什麼說@KevinB? –

1

您要刪除屬性從attrAattrB,而不是input。嘗試像下面

input.removeAttr("filtername"); 
input.removeAttr("filtervalue"); 
0

試着在你輸入的VAR聲明

var input = $("#txtR7163776")[0] 

也許你的jQuery版本返回一個數組使用索引0和你錯過..在我的jQuery版本的代碼工作正常,,

+0

這是一個XY問題,完全不同。通過與他們直接交談解決。 :) –

+1

恭喜.... –

+0

哈哈..謝謝你。 –