无法使用Javascript来设置文本
我看到了所有这些例子,但由于某种原因,我的工作不正常。如果在选择列表中选择了某个值,我有一个动态添加的文本框。无法使用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";
}
}
}
试试这个..
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";
}
}
}
您可以随时指定元素变量,以缩短码。
@RoberPitt - 第二如果应该阅读“如果($ found.value ==”其他“),但+1给你提供正确的答案和清理我的蹩脚的代码!:) – tpow 2010-09-10 15:22:34
它不蹩脚,它的事实你还有更多需要学习的东西,我的代码可能对其他成员很糟糕:) – RobertPitt 2010-09-10 15:27:17
这看起来像你试图对Asp.Net呈现的控件进行更改。确保您的控件的实际编号格式正确。通常,UniqueID格式为ctl00_Content_WhereFound
,但ClientID格式为ctl00$Content$WhereFound
。
'id'用下划线呈现,'name'用$ – lincolnk 2010-09-10 14:58:45
我注意到的第一件事是您在if子句中使用了'innerHTML',在else子句中使用了'innerText'。这是故意的吗?他们做不同的事情......
这是一个痛苦,但它可能是值得使用document.createElement()
等功能来建立/修改动态内容。
我遇到过类似的问题......一般来说,使用DOM函数而不是innerHTML通常会修复它,尽管它明显更加冗长。 JQuery有一些非常有用的功能。
呈现我在尝试不同的事情,看看我是否可以得到要么工作。 – tpow 2010-09-10 15:13:02
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";
}
}
}
乍一看没有错。也许你可以设置一个显示问题的例子? [jsfiddle](http://www.jsfiddle.net)或[jsbin](http://jsbin.com) – 2010-09-10 14:53:55
'ctl00_Content_WhereDetails'是什么类型的元素?如果它是一个表单字段,你必须使用'value'而不是'innerHTML'或'innerText'。 (因为它破坏并重新解析任何元素内容,所以'innerText'在任何情况下都应该避免使用IE-only和'innerHTML + =')。 – bobince 2010-09-10 15:09:12
@bobince - 它是一个asp.net文本框 - 你看到的名字是由.NET创建的 – tpow 2010-09-10 15:13:51