我看到这一切的例子,但由于某种原因,我的工作不起作用。我有一个动态添加的文本框,如果在选择列表中选择了某个值。
该字段显示的部分正在运行,但我也尝试在框中添加一些文本,这是我无法开始工作的。我也试图使用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";
}
}
}
答案 0 :(得分:4)
我注意到的第一件事是你在if子句中使用了'innerHTML',在你的子句中使用了'innerText'。这是故意的吗?他们做不同的事情......
这很痛苦,但使用document.createElement()
等功能来构建/修改动态内容可能是值得的。
我遇到过类似的问题......一般来说,使用DOM函数而不是innerHTML经常会修复它,尽管它更加冗长。 JQuery有一些非常有用的功能。
答案 1 :(得分: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";
}
}
}
您始终可以将元素分配给变量以缩短代码。
答案 2 :(得分:1)
这看起来像是在试图对Asp.Net渲染控件进行更改。确保正确格式化控件的实际ID。通常,UniqueID的格式类似于ctl00_Content_WhereFound
,但ClientID的格式为ctl00$Content$WhereFound
。
答案 3 :(得分:1)
innerText
。是否有理由在两种情况下都不能使用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";
}
}
}