【问题标题】:Javascript Manipulation on included DOM element对包含的 DOM 元素进行 Javascript 操作
【发布时间】:2013-06-10 15:44:26
【问题描述】:

基本上我所做的是根据经典 ASP 中的下拉选择动态加载外部 HTML 文件。对于我为之工作的人来说,这是一个旧系统,所以除了弄清楚这一点之外,我没有太多选择。包含的 HTML 只是这样的数据表;

<table cellspacing="0" cellpadding="0" style="vertical-align:top; width:100%; ">
<tr style="line-height:14px;" >
<td width="150"><b style="color:#888888;">Symbol<b></td>
<td ><b style="color:#888888;">Security</b></td>
<td width="150" style="text-align:right;"><b style="color:#888888;">Amount</b></td>
<td width="150" style="text-align:right;"><b style="color:#888888;">Mkt Value</b>    </td>
<td width="150" style="text-align:right;"><b style="color:#888888;">Est.Next Date</b></td>
</tr>
<tr style="line-height:14px; background-color: #f0f0e8;">
<td>QPRMQ</td>
<td>BANK DEPOSIT SWEEP PRGRAM FDIC ELIGIBLE</td>
<td style="text-align:right;">100.00%</td>
<td style="text-align:right;">$191.77</td>
<td style="text-align:right;" id="NextSWPDate">11/15/2010</td>
</tr>
</table>

我想在 ID 为“NextSWPDate”的 TD 元素上运行一个函数,但由于这是“包含”的 html,我只收到了错误;

无法设置属性“innerHTML”的值:对象为空或未定义

我的函数现在只是通用的,我试图对对象进行任何操作,在我得到那个集合之后,我可以快速轻松地编写真正的逻辑。

    function SetNextSWPDate(){
document.getElementById("NextSWPDate").innerHTML = "this is a test";
}

谢谢你, 尼克G

【问题讨论】:

  • html文件加载后是否调用该函数?你如何加载这个外部 html 文件?
  • 一切加载完毕后,我在 document.ready(){} 函数中调用了外部函数。外部 HTML 文件也通过 document.ready() 中的 .load() 函数加载,但在我的 SetNextSWPDate() 函数之前。 .load() 用于页面中的
    。
  • 好的,所以你必须为你的 jQuery.load 函数实现一个回调函数: $("#yourDiv").load("youExternalFile",function(){//你的东西在这里... });见api.jquery.com/load/#callback-function
  • 我仍然无法让它工作,这是我在 document.ready() 函数中的 .load() 调用 $("document").ready( function(){ $ ("#PipData").load('/backoffice/Prospects/App360/pageFragments/pipswp/218145_pip.html'); $("#SwpData").load('/backoffice/Prospects/App360/pageFragments/pipswp/218145_swp .html',function(){ $("#NextSWPDate").innerHTML = "这是一个测试"; }); });
  • 我想通了,谢谢你的帮助,不知道如何标记你的答案

标签: javascript jquery dom innerhtml


【解决方案1】:

您的标签提到了 jQuery,所以我希望 jQuery 解决方案是可以接受的。一个标准的$("#NextSWPDate").text("whatever"); 对我来说效果很好。 http://jsfiddle.net/pCx9K/

【讨论】:

  • 嘿,蒂姆,你是对的div> 元素使它无法正常工作。
【解决方案2】:

如果包含 HTML 或生成的 HTML,您可能希望等待执行 javascript,直到 DOM 完全加载。 为此,请尝试使用 javascript 的 window.onload 或 jQuery 的 $(document).ready 函数。

【讨论】:

  • 在我的主页中使用
    上的 .load() 函数加载外部 HTML 后,我目前正在页面的 document.ready() 中调用该函数。跨度>
  • 我明白了,document.ready 函数在文档第一次加载时被触发。所以在实际执行 .load 函数之前。您应该将函数调用添加到 .load 函数的回调中,正如 mguimard 在您的问题的评论中所描述的那样。
【解决方案3】:
 The property is read/write for all objects except the following, for 
 which it is read-only: COL, COLGROUP, FRAMESET, HEAD, HTML, STYLE,
 TABLE, TBODY, TFOOT, THEAD, TITLE, TR.

Colin's work-around (setting innerText on the td instead of innerHTML on the tr)
is a good one in your case. If your needs become more complex, you'll have to
resort to The Table Object Model.

来源Why is document.getElementById('tableId').innerHTML not working in IE8?

参考http://msdn.microsoft.com/en-us/library/ms533899%28v=vs.85%29.aspx

【讨论】:

    【解决方案4】:

    好的,所以你必须为你的 jQuery.load 函数实现一个回调函数: $("#yourDiv").load("youExternalFile",function(){//your stuff here ... });请参阅 api.jquery.com/load/#callback-function – mguimard 3 小时前

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签