-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

ページの最後にjavascriptファイルを配置していないか、readyコールバックを使用していないため、アラートメッセージにゼロが表示されます。レディコールバックを使用するには、次のようにコードを追加します

$(document).ready(function(){/*ここにJavaScriptコードを追加*/});

于 2012-07-30T08:36:26.120 に答える
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 に答える