javascript - document.write() 和 Ajax - 不起作用,寻找替代方案

标签 javascript html ajax document.write

我最近问了一个问题here ,并收到了很好的回应(我很快就会接受最积极的答案,除非出现更好的替代方案),但不幸的是,似乎建议的两个选项都不与 Ajax 兼容(< em>或任何包含此类“内联相对 jQuery”的动态添加内容)

无论如何,我的问题与良好的 ole' document.write() 相关。

当页面仍在渲染时,效果很好;当附加片段包含它时就不那么重要了。是否有任何替代方案不会破坏现有页面内容,但仍会内联附加字符串,如调用发生的位置?

换句话说,是否有一种方法/替代 document.write() ,在渲染后调用时不会破坏现有的页面内容?可以说是 Ajax 友好版本吗?

<小时/>

这就是我要去的地方:

var _inline_relative_index = 0;
function $_inlineRelative(){
    // i hate non-dedicated string concatenation operators
    var inline_relative_id = ('_inline_relative_{index}').replace('{index}', (++_inline_relative_index).toString());
    document.write(('<br id="{id}" />').replace('{id}', inline_relative_id));
    return $(document.getElementById(inline_relative_id)).remove().prev('script');
}

然后:

<div>
    <script type="text/javascript">
        (function($script){
            // the container <div> background is now red.
            $script.parent().css({ 'background-color': '#f00' });
        })($_inlineRelative());
    </script>
</div>

最佳答案

您可以访问每个 DOM 节点的 innerHTML 属性。如果您直接设置它,您可能会破坏元素,但如果您向其附加更多 HTML,它将保留现有的 HTML。

document.body.innerHTML += '<div id="foo">bar baz</div>';

innerHTML 的大锤有各种细微差别,因此我强烈建议使用 jQuery 等库来为您标准化一切。

关于javascript - document.write() 和 Ajax - 不起作用,寻找替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509341/

相关文章:

javascript - jQuery Ajax 加载许多相同的东西

javascript - 为什么setTimeout和setiImidiate仅在IO周期中是确定性的

javascript - 甚至不返回错误? Node.js 请求

javascript - 点击任意位置打开关闭侧边栏

javascript - 如果 CSS 和 JavaScript 中其他文本框不为空,则禁用文本框

jquery - Rails 3.2 jquery-ujs 的奇怪行为

带有 vars 的 javascript 闭包函数?

javascript - 确保嵌套成员的接口(interface)类型

php - 下拉菜单(列表)与 I.E. 不兼容?

php - 将 reCaptcha ajax api 实现到已使用 ajax 的现有 Web 表单