2010-09-10 59 views
3

我看到了所有這些例子,但由於某種原因,我的工作不正常。如果在選擇列表中選擇了某個值,我有一個動態添加的文本框。無法使用Javascript來設置文本

該字段顯示的部分正在工作,但我也試圖添加一些文本到框中,我無法工作。我還試圖使用JS來選擇文本,一旦它進入 - 但還沒有得到那麼多!

這是否有明顯的錯誤?

function showBox() { 
    if (document.getElementById("ctl00_Content_WhereFound").value == "Other" || document.getElementById("ctl00_Content_WhereFound").value == "Friend/Employee Referral") 
    { 
    document.getElementById('ctl00_Content_WhereDetails').style.display = "inline"; 
    if (document.getElementById("ctl00_Content_WhereFound").value == "Other") { 
     document.getElementById('ctl00_Content_WhereDetails').innerHTML += 'Enter Other'; 
    } else { 
     document.getElementById('ctl00_Content_WhereDetails').innerText += "Enter Referral"; 
    } 
    } 
} 
+1

乍一看沒有錯。也許你可以設置一個顯示問題的例子? [jsfiddle](http://www.jsfiddle.net)或[jsbin](http://jsbin.com) – 2010-09-10 14:53:55

+1

'ctl00_Content_WhereDetails'是什麼類型的元素?如果它是一個表單字段,你必須使用'value'而不是'innerHTML'或'innerText'。 (因爲它破壞並重新解析任何元素內容,所以'innerText'在任何情況下都應該避免使用IE-only和'innerHTML + =')。 – bobince 2010-09-10 15:09:12

+0

@bobince - 它是一個asp.net文本框 - 你看到的名字是由.NET創建的 – tpow 2010-09-10 15:13:51

回答

2

試試這個..

function showBox() 
{ 
    $Found = document.getElementById("ctl00_Content_WhereFound"); 
    $Where = document.getElementById('ctl00_Content_WhereDetails'); 

    if($Found.value == "Other" || $Found.value == "Friend/Employee Referral") 
    { 
     $Where.style.display = "inline"; 
     if($Where.value == "Other") 
     { 
      $Where.value = 'Enter Other'; 
     }else 
     { 
      $Where.value = "Enter Referral"; 
     } 
    } 
} 

您可以隨時指定元素變量,以縮短碼。

+0

@RoberPitt - 第二如果應該閱讀「如果($ found.value ==」其他「),但+1給你提供正確的答案和清理我的蹩腳的代碼!:) – tpow 2010-09-10 15:22:34

+0

它不蹩腳,它的事實你還有更多需要學習的東西,我的代碼可能對其他成員很糟糕:) – RobertPitt 2010-09-10 15:27:17

1

這看起來像你試圖對Asp.Net呈現的控件進行更改。確保您的控件的實際編號格式正確。通常,UniqueID格式爲ctl00_Content_WhereFound,但ClientID格式爲ctl00$Content$WhereFound

+0

'id'用下劃線呈現,'name'用$ – lincolnk 2010-09-10 14:58:45

4

我注意到的第一件事是您在if子句中使用了'innerHTML',在else子句中使用了'innerText'。這是故意的嗎?他們做不同的事情......

這是一個痛苦,但它可能是值得使用document.createElement()等功能來建立/修改動態內容。

我遇到過類似的問題......一般來說,使用DOM函數而不是innerHTML通常會修復它,儘管它明顯更加冗長。 JQuery有一些非常有用的功能。

+0

呈現我在嘗試不同的事情,看看我是否可以得到要麼工作。 – tpow 2010-09-10 15:13:02

1

innerText至少不支持Firefox。在這兩種情況下你有沒有理由不能使用innerHTML

此外,您可能希望存儲元素的引用,使你的代碼更清潔和更快速:

function showBox() { 
    var eFound = document.getElementById("ctl00_Content_WhereFound"); 
    if (eFound.value == "Other" || eFound.value == "Friend/Employee Referral") 
    { 
    var eDetails = document.getElementById('ctl00_Content_WhereDetails'); 
    eDetails.style.display = "inline"; 
    if (eFound.value == "Other") { 
     eDetails.innerHTML += 'Enter Other'; 
    } else { 
     eDetails.innerHTML += "Enter Referral"; 
    } 
    } 
}