-1

我不是 jquery 开发人员,也不是 javascript 开发人员。我正在尝试一种让我的生活变得简单的快速技巧。这是页面: 在此处输入图像描述

我想要完成的是:

  1. 我想在页面上的每个元素div之后添加一个 mathjax_preview 类。textarea
  2. 那个 div 的 inner.HTML 必须是对应的里面的文本textarea

但这似乎不起作用。

我有以下 javascript 代码,js/1.js它在页面加载时被加载:

var preview_number = 0;
$("textarea").each(function() { 
    var d = $(this).next();
    if (!d.hasClass("mathjax_preview")) {
      preview_number++;
      var d = $("<div class='mathjax_preview' " +
         "style='padding: 5px; color: black; background: #eee; border: 1px solid #888;float:left;'" +
         "></div>");
      d.attr("id", "mathjax_preview_" + preview_number);
      d.insertAfter(this);
    } 
    d.text($(this).val());
    MathJax.Hub.Queue([ "Typeset", MathJax.Hub, d.attr("id") ]);
});

编辑:

我刚刚在上述文件的开头插入了以下代码段:

var preview_number = 0;
var elements = document.getElementsByTagName("textarea");
  alert(elements.length);

它的警报0。怎么来的?

4

5 回答 5

2

尝试以下方法(我没有测试过这个,因为它直接从我的头顶上掉下来):

$(document).ready(function() {
    var preview_number = 0;

    $("textarea").each(function() { 
        preview_number++;

        var d = document.createElement("div");
        $(d).attr("id", "mathjax_preview_" + preview_number);
        $(d).addClass("mathjax_preview");
        $(d).css("padding", "5px");
        $(d).css("color", "black");
        $(d).css("background", "#eee");
        $(d).css("border", "1px solid #888");
        $(d).css("float", "left");
        $(d).html($(this).val());

        MathJax.Hub.Queue([ "Typeset", MathJax.Hub, $(d).attr("id") ]);

        $(this).append(d);
    });
});
于 2012-07-30T08:23:40.143 回答
1

变量textarea不存在。改用this

d.insertAfter(this);
于 2012-07-30T08:10:04.503 回答
1

您没有textarea定义变量。

d.insertAfter(textarea);

我相信你可以$(this)参考。

d.insertAfter($(this));
于 2012-07-30T08:11:36.980 回答
1

textarea里面有什么d.insertAfter(textarea);

似乎是d.insertAfter($(this));

于 2012-07-30T08:12:27.200 回答
1

警报消息显示为零,因为您没有将 javascript 文件放在页面末尾,也没有使用准备好的回调。要使用就绪回调添加代码如下

$(document).ready(function() {/*在此处添加您的 javascript 代码 */});

于 2012-07-30T08:36:26.120 回答