Как добавить динамическую форму в конец таблицы? - PullRequest
1 голос
/ 26 июня 2010

Я совершенно новичок в Javascript и Greasemonkey, поэтому не стесняйтесь исправлять меня, если я делаю это неэффективно или неправильно.

На этом форуме, на котором я пишу, нажатие кнопки "Ответить" приводит квверх новое окно с просто текстовой формой для публикации. Я хочу создать скрипт greasemonkey, который добавляет скрипт для формы ответа на страницу реального потока.

Итак, программа просматривает таблицу, в которой хранится обсуждение, и добавляет childNode в конец таблицы.Я хочу, чтобы этот childNode был формой, созданной на странице ответов.

Вот скелет моего скрипта:

// ==UserScript== 
// @name QuickEeply 
// @namespace  http://userscripts.org/users/181447 
// @description    Adds "QuickReply" forms to TCC discussion posts 
// @include        * 
// ==/UserScript==


var tables = document.getElementsByTagName("td");  


for (var i = 0; i < tables.length; i++) {

 if (tables[i].className == "content") 
 {    var editTable = tables[i];
 } 

}

editTable.appendChild = ''

Вот скрипт, который я скопировал и вставил со страницы ответа

<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply">
 <input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value="">
 <br>
 Message:<br>
 <textarea rows="20" style="width:70%;" name="message" id="message"></textarea>

 <br>
 <br>
 <input type="submit" id="submit_post" value="Post Reply">
 <input type="hidden" name="post_id" value="1010815">
 <input type="hidden" name="thread_id" value="1010815">
</form>

Так как можноЯ занимаюсь созданием сценария, который находит идентификатор_потока текущей страницы и создает поле для ответа для каждой страницы на странице, где фактически находится поток.

Редактировать: вот исходный код -

http://pastebin.com/2UaUVGJA (главная страница обсуждения)
http://pastebin.com/hAx2SPUu (страница ответов)

РЕДАКТИРОВАТЬ 2:

I've used Brock's template, and it's not working.  What do I need to do to correct it?

// ==UserScript==
// @name           Quick_ReplyTest
// @namespace      http://userscripts.org/users/181447
// @description    Inserts QuickReply
// @include        *
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==


/* Optional:
window.addEventListener ("load", Greasemonkey_main, false);
*/

$(document).ready (Greasemonkey_main);


function Greasemonkey_main ()
{
    /*--- Get the first node inside the id="main" span (Google.com)
        If that's not there, then get the first node of the html body.
    */
    var TargetNode  = $("a[href*='event=reply/post']");
    if (!TargetNode)
        TargetNode  = $("body *:first");


  $(TargetNode).after
    (
        "<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply">
        + "<input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value="">"
        + "<br> Message:<br>"
        + "<textarea rows="20" style="width:70%;" name="message" id="message"></textarea>"
        + "<br> <br>"
        + "<input type="submit" id="submit_post" value="Post Reply">"
        + "<input type="hidden" name="post_id" value="1010815">"
        +"<input type="hidden" name="thread_id" value="1010815">"
        +"</form>"
    );
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2010

Re:

РЕДАКТИРОВАТЬ 2: Я использовал шаблон Брока, и он не работает. Что мне нужно сделать, чтобы исправить это?

Вы должны быть крайне осторожными в отношении многострочных строк и строк с кавычками или апострофами. В строке <form> произошла синтаксическая ошибка JavaScript.

Я очистил его для вас (и изменил синтаксис на мой предпочитаемый стиль) ...

Обратите внимание, как подсветка синтаксиса StackOverflow сохраняет всю строку красным цветом? Большинство редакторов программ тоже дают такую ​​подсказку.

$(TargetNode).after
(
   '<form method="POST" action="http://dl.tccd.edu/index.php/classforums/posts/event=saveReply">    \
    <input type="hidden" name="subject" size="45" id="txt_subject" maxlength="200" value="">        \
    <br> Message:<br>                                                                               \
    <textarea rows="20" style="width:70%;" name="message" id="message"></textarea>                  \
    <br> <br>                                                                                       \
    <input type="submit" id="submit_post" value="Post Reply">                                       \
    <input type="hidden" name="post_id" value="1010815">                                            \
    <input type="hidden" name="thread_id" value="1010815">                                          \
    </form>                                                                                         \
   '
);

.

Для дальнейших вопросов, пожалуйста, откройте новый вопрос, чтобы за ним не было слишком трудно следовать.

0 голосов
/ 26 июня 2010

Перейдите на этот ответ и получите шаблон Greasemonkey.

В нем показано, как вставить HTML, например форму, в определенные узлы.

Замените HTML-код таблицы этого образца на HTML-код вашей формы. Тогда ваш TargetNode будет что-то вроде $("a[href*='event=reply/post']") - на основе указанной страницы. Обратите внимание, что это должно вставить форму в каждой записи сообщения.

Предупреждение: форма не обязательно будет там, где вы хотите, и мы еще не синхронизировали форму с каждым сообщением.

Делайте, что можете, но эти следующие этапы должны быть заданы в новом вопросе после того, как вы заработаете первую часть и повысите скорость приема. ; -)

...