【问题标题】:Textarea value is NULL javascriptTextarea 值为 NULL javascript
【发布时间】:2015-12-04 04:22:34
【问题描述】:

我想显示文本区域的值。我用 PHP 代码生成它 这段代码在循环中

 for($i=0;$i<$piecount;$i++)
    {
    echo "<tr><td class=\"forma\" align=\"center\">".$compc[$i]."</td>";
    if($i==0)
    {
       echo "<td align=\"center\" class=\"forma\" rowspan=".$pcg."  style=\"\"> 
      <textarea name=\"eva\" id=\"evatext\"   class=\"textEva\" >
      </textarea> 
      <input type=\"image\"src=\"image/save.jpg\"class=\"imgClass\" onclick=\"EvaCek();\" name=\"save\"></td></tr>";

} }

我还有一个 html 代码用于输入日期的虚拟我的 id,它不显示

<input name="evadate" id="inputdate" style="display:none">

然后我将它传递给 javascript

function EvaCek()
{
    var dateobj = new Date();
        var month = dateobj.getUTCMonth()+1;
        var day = dateobj.getUTCDate();
        var year = dateobj.getUTCFullYear();
        var tes=document.getElementById("inputdate").innerHTML= year+"-"+month+"-"+day;
        var bla=document.getElementById("evatext").value;

    if(bla!="")
    {
     alert(tes);
     alert(bla);

    }

}

当我在文本区域中输入内容并保存时,它会发出警报,但只有日期,文本区域为 NULL。这里有什么问题?谢谢你

【问题讨论】:

  • 尝试将PHP 输出为HTML,看看是否会遇到同样的错误。
  • 检查您的“name”属性是否与您的“id”属性匹配,以便 getElementById 对齐。此外,使用浏览器的控制台读取错误而不是使用警报,它会为您节省大量时间。为此,请在浏览器中打开“开发人员工具”以查看控制台,然后使用 console.log(tes) 而不是 alert(tes)
  • @尼克。啊,它有效。 php有问题吗?
  • 问题解决了@Elbert ?
  • @Nana 还没有。当给定输入时,第一个文本区域会发出警报。另一个不要

标签: javascript php textarea


【解决方案1】:

这是因为每个输入的 ID 应该是唯一的。

ID 必须是唯一的

欲了解更多信息,请查看Unique ID

所以,通过类名访问它。我在任何地方都没有看到'inputdate'。所以,我没有编辑它。但是,不要通过ID 访问inputdatetextarea。 因为,forloop 正在创建大量的 &lt;textarea&gt;&lt;/textarea&gt;,并且每个 textarea 都具有相同的 id避免使用 ID 访问

<?
for($i=0;$i<$piecount;$i++)
{
    echo "<tr><td class=\"forma\" align=\"center\">".$compc[$i]."</td>";
    if($i==0)
    {
        echo "<td align=\"center\" class=\"forma\" rowspan=".$pcg."  style=\"\"> 
            <textarea name=\"eva\" id=\"evatext\" class=\"textEva\" ></textarea> 
            <input type=\"image\"src=\"image/save.jpg\"class=\"imgClass\" onclick=\"EvaCek();\" name=\"save\">
        </td>
        </tr>";
    }
}
?>

<?
function EvaCek()
{
  var dateobj = new Date();
      var month = dateobj.getUTCMonth()+1;
      var day = dateobj.getUTCDate();
      var year = dateobj.getUTCFullYear();
            //change for inputdate. Access it through class name.
      var tes=document.getElementByClass("inputdate").innerHTML= year+"-"+month+"-"+day;
      var bla=document.getElementByClass("textEva").value;

  if(bla!="")
  {
   alert(tes);
   alert(bla);

  }
}
?>

【讨论】:

  • 它有效。但是在使用 getElementByTagName :) 之后。谢谢
  • 很高兴。有效。是的 TagName 也是一种选择。谢谢@Elbert
【解决方案2】:

使用它来获取文本区域的值 ...demo

document.getElementById("evatext").innerHTML; 

完整代码

function EvaCek()
{
    var dateobj = new Date();
    var month = dateobj.getUTCMonth()+1;
    var day = dateobj.getUTCDate();
    var year = dateobj.getUTCFullYear();
    var tes=document.getElementById("inputdate").innerHTML= year+"-"+month+"-"+day;
    var bla=document.getElementById("evatext").innerHTML;// use this

    if(bla!="")
    {
     alert(tes);
     alert(bla);

    }
}

【讨论】:

  • 你是在文本区域之间回显或输入任何内容还是没有......??
  • 尝试使用document.getElementById("evatext").text;
猜你喜欢
  • 2021-01-04
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多