2013-06-29 45 views
0

我有下面的JavaScript代碼。Javascript innerHtml和文本框和標籤問題的價值

var txtone = document.getElementByID("txtone"); 
var lblone = document.getElementByID("lblone"); 
var tone = txtone.value; 
var lone = lblone.innerHTML; 

現在的問題是有些時候我沒有在我的網頁txtone或lblone所以在這種情況下,我的代碼最後兩行給出了錯誤。

解決方案是檢查它們是否存在可能是這樣的代碼。

var txtone = document.getElementByID("txtone"); 
var lblone = document.getElementByID("lblone"); 
if(txtone) 
var tone = txtone.value; 
if(lblone) 
var lone = lblone.innerHTML; 

但在我的情況下,我有大約100到200個文本框和標籤與基於某些條件呈現。所以在這種情況下,我不認爲給予解決方案將是最好的解決方案。

是否有任何簡單的解決方案,如原型價值或innerHtml的問題。

(這是一個aspx的網站頁面)

+0

確保你是不是DOM重複的ID。 –

+0

因此,使一個函數e變成數值或空白 – mplungjan

+0

你可以使用'var tone = txtone來簡化它? txtone.value:undefined;',你也可以編寫一個包裝函數來獲得值 –

回答

1

更新答案

檢查DEMO http://jsfiddle.net/tD6eC/1/

您可以在不類或ID喜歡使用。

HTML

<label id="">label 1</label><input id="" value="1" /><br /> 
<label id="">label 2</label><input id="" value="2" /><br /> 
<label id="">label 3</label><input id="" value="3" /><br /> 
<label id="">label 4</label><input id="" value="4" /><br /> 
<label id="">label 5</label><input id="" value="5" /><br /> 
<div id="content"></div> 

JQUERY

$(document).ready(function(){ 
    var val, label; 
    $('label').each(function(){ 
     val = $(this).html(); 
     label = $(this).next('input').val(); 
     if(val != 'undefined' && label != 'undefined'){ 
      $('#content').append(val+' : '+label+'<br />'); 
     } 
    }); 
}); 
+0

非常感謝您的興趣,但我沒有名字txtone的類我有100到200文本框和不同標識的標籤 –

+0

然後,再次檢查我的更新答案,您可以使用沒有任何標識或類,並且不需要再次修改您的代碼,只要您使用標籤和輸入(必須在標籤後面)... http: //jsfiddle.net/tD6eC/1/ – yeyene

+0

是的,這是可以做到的,但我必須改變我所有的代碼我已經在很多地方使用document.getElementById,並且許多函數調用我必須改變所有這些,所以我認爲它更好要添加條件而不是做這個東西。非常感謝您的關注。 –