【问题标题】:Get edited cell value from table cell从表格单元格中获取已编辑的单元格值
【发布时间】:2013-01-11 01:44:37
【问题描述】:

我在 html 页面上使用 php 显示表格。我想编辑单元格内容(基本上是对值进行更改,并进行 ajax 调用以更新数据库)。我的要求是使用 onblur 功能(我也可以使用 onkeypress 来解决)。谁能告诉我用单元格 id 输入新值的最简单方法是什么?

x 的警报告诉我它的“对象 HTMLTableCellElement”

谢谢!!!

foreach($_RESPONSE['VENDOR_LIST'] as $r){
     echo  "<tr><td>".$r['fdEmail']."</td><td id='companyname_".$r['fdId']."' contenteditable='true' onblur='updateValue(id)';>".$r['fdCompanyName']." ".$r['fdId']."</td></tr>";
}

Javascript 方法

function updateValue(thisdata){
        alert(""+thisdata);
    var x=document.getElementById(""+thisdata);
    if(x){
        alert(x);
        //var r = x.value;
    }
    else
            alert("not found");

}

【问题讨论】:

    标签: php javascript jquery ajax database


    【解决方案1】:

    在您的 HTML 中,将 updateValue(id) 更改为 updateValue(this.id);

    然后将其放在 updateValue 函数中的第一个 if 语句中。

    if(x.innerText){
        alert(x.innerText);
    } else {
        // Firefox support
        alert(x.textContent);
    }
    

    【讨论】:

    • 谢谢安东尼。我让它只用 alert(x.innerText);
    • 是的,我刚刚发现我的代码由于 x.innerText 而无法在 Firefox 中运行,所以我将其更改为 x.textContext。
    【解决方案2】:

    表格单元格的“值”实际上并不被 javascript 视为值,它只是 HTML。尝试提醒x.innerText。通过 ID 获取单元格内容见this question

    另外,我知道每个人都讨厌听到这个,但是使用jQuery 会更容易。

    【讨论】:

      【解决方案3】:

      在你的代码中

      var x=document.getElementById(""+thisdata);
      

      这里x是一个对象,你需要编写所需的函数来改变值或获取值。

      alert(x.innerHTML);
      

      会给你单元格的值。

      HTML td 标记中提到的 ID 与您的 getElementById deos 中的 id 不匹配。 (使用浏览器中的错误控制台获取 javascript 错误)

      您可能必须像这样更改您的功能

      function updateValue(thisdata){
          var x=document.getElementById("companyname_"+thisdata);
          if(x){
              alert(x.innerHTML);
          }
          else
                  alert("not found");
      
      }
      

      您的 HTML 代码:

      foreach($_RESPONSE['VENDOR_LIST'] as $r){
           echo  "<tr><td>".$r['fdEmail']."</td>
                      <td id='companyname_".$r['fdId']."' contenteditable='true' onblur="updateValue('companyname_".$r['fdId']."');">".$r['fdCompanyName']." ".$r['fdId']."</td></tr>";
      }
      

      注意:我没有测试代码,请相应地进行更改,如果你觉得有困难,请在此处发布:)

      始终使用 jQuery,它让您的任务变得简单 :)

      【讨论】:

      • 很多人说 jQuery 让生活更轻松。只是我对前端的东西不太舒服。例如现在我被困在当我将鼠标悬停在标签上时如何显示工具提示,因为我遇到的所有示例都使用 jQuery:-/ 感谢您的帮助
      • 一开始你会觉得很难,一旦习惯了就会爱上它:D