无法获取Javascript来设置文本

时间:2010-09-10 14:50:10

标签: 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";
    }
  }
}

4 个答案:

答案 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)

至少Firefox不支持

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";
    }
  }
}