2017-06-20 59 views
0

我正在使用函數添加兩個文本框,並希望在第三個文本框中顯示結果。爲此,我使用了兩個函數。第一個getdata()要讀取第一個文本框的值,第二個是getdata1()以讀取第二個文本框的值。我也使用onchange事件。但結果顯示爲NaN。請幫幫我。 這裏是我的代碼與java腳本函數問題

var a, b, c; 
 

 
function getdata(txt) { 
 
    x = txt.value; 
 
    if (!isNaN(x)) { 
 
    a = parseInt(document.getElementById("txt").value); 
 
    } else { 
 
    alert("Input not valid"); 
 
    txt.focus(); 
 
    txt.value = ""; 
 
    } 
 
} 
 

 
function getdata1(txt) { 
 
    x = txt.value; 
 
    if (!isNaN(x)) { 
 
    b = parseInt(document.getElementById("txt").value); 
 
    } else { 
 
    alert("Input not valid"); 
 
    txt.focus(); 
 
    txt.value = ""; 
 
    } 
 
} 
 

 
function myFunction(s, t) { 
 
    var s = a; 
 
    var t = b; 
 
    var c = s + t; 
 
    document.getElementById("result").value = c; 
 
}
<td><input type="text" name="txt[]" id="txt[]" onchange="getdata(this)" /></td> 
 
<td><input type="text" name="txt[]" id="txt[]" onchange="getdata1(this)" /></td> 
 
<td><input type="text" name="result" id="result" onfocus="myFunction()" /></td>

+2

寫問題和代碼,並提供你的HTML代碼 – Bhargav

+0

你已經給出相同的'id'這是其中一個原因這兩個文本框對於錯誤 – warl0ck

+2

https://stackoverflow.com/help/how-to-ask 閱讀此!並編輯你的問題。 – amighty

回答

0

不要爲不同的元素使用相同的id值!使用x而不是document.getElementById("txt").value

var a, b, c; 
 
function TryParceData(src, old) { 
 
    x = src.value; 
 
    if (!isNaN(x)) { 
 
    return parseInt(x); 
 
    } else { 
 
    alert("Input not valid"); 
 
    src.focus(); 
 
    src.value = ""; 
 
    return old; 
 
    } 
 
} 
 
function getdata(txt) { 
 
    a = TryParceData(txt, a); 
 
    myFunction(); 
 
} 
 

 
function getdata1(txt) { 
 
    b = TryParceData(txt, b); 
 
    myFunction(); 
 
} 
 

 
function myFunction(s, t) { 
 
    var s = a; 
 
    var t = b; 
 
    var c = s + t; 
 
    document.getElementById("result").value = c; 
 
}
<input type="text" name="txt[]" onchange="getdata(this)" /> 
 
<input type="text" name="txt[]" onchange="getdata1(this)" /> 
 
<input type="text" name="result" id="result" onfocus="myFunction()" />

+0

Thankx爲這個可愛的解決方案。問題解決了,但還有一件事是當text2中發生onchange事件時,結果顯示。意味着應該從兩個文本框中進行反射。這也是幫助。 –

+0

@VishalGoyal,我沒有注意。當第一個或第二個輸入被改變時,你想在'#result'輸入中顯示結果嗎? – Alexander

+0

是@Alexander你是對的 –

0

首先,如果你有一個具有相同的ID,第一個或最後一個將是你的選擇獲取的唯一的一個多元素。其次,屬性'id'被稱爲id,因爲它爲你的元素提供了標識,這基本上意味着不要給每個元素賦予相同的標識。第三,你得到NaN是因爲你正在尋找一個id爲'txt'的元素,但是你的頁面沒有任何東西(這個錯誤發生在你的parseInt部分)。你的元素的id是'txt []'。嘗試將這些ID更改爲另一個的「txt1」和「txt2」並更改您的腳本。修復後更新我。歡呼聲

0

試試這個代碼在適當的格式

var a, b, c; 
 

 
function getdata(txt) { 
 
    x = parseInt(txt.value); 
 
    if (!isNaN(x)) { 
 
    a = parseInt(document.getElementById("txt").value); 
 
    } else { 
 
    txt.focus(); 
 
    txt.value = ""; 
 
    } 
 
} 
 

 
function getdata1(txt) { 
 
    x = parseInt(txt.value); 
 
    if (!isNaN(x)) { 
 
    b = parseInt(document.getElementById("txt1").value); 
 
    } else { 
 
    txt.focus(); 
 
    txt.value = ""; 
 
    } 
 
    myFunction(); 
 
} 
 

 
function myFunction() { 
 
    var c = a + b; 
 
    document.getElementById("result").value = c; 
 

 
}
<input type="text" id="txt" onblur="getdata(this)"> 
 
<input type="text" id="txt1" onblur="getdata1(this)"> 
 
<input type="text" id="result">