首页 > 解决方案 > 如何获取此表单的 div id?

问题描述

开发一个应用程序,将用户在应用程序上键入的内容导出到具有类似组件的特定网站。例如,如果用户在应用程序上输入了一个标题,当他按下一个按钮时,它会将该值导入一个网页,该网页也要求用户输入。

这是流程图什么的

用户 --> 用户在应用程序中输入文本 --> 应用程序复制用户输入的内容 --> 应用程序打开特定网站 --> 应用程序将他复制的内容粘贴到网站。

(网站:以谷歌表格为例。)

现在我已经完成了所有这一切,除了应用程序粘贴他复制的内容的后半部分。

问题是应用程序不知道在哪里粘贴它。

所以我想得到下面代码的ID,如果你只识别所有的ID或类似的东西以及如何调用它就很好了。

已成功从后端导入数据,但对如何获取文本区域、单选按钮、div 的 id 或变量名称的线索为零。

javascript:

(function () {
function WW(ele, val)
{
    if(document.getElementById(ele) && val != "")
    {
        document.getElementById(ele).value = val;
    }
}
WW("story-title", "The Good Peacock");
)();

这是从某人那里复制的。

这适用于具有 id 的其他网站,例如:

<textarea id="story-title">

所以,需要知道HTML下面的id。

这是网站源代码的一部分,是自动填充的。

尝试用 调用getElementByClassName(),但没有用。

    <form class="main-edit-form">

          <div class="required-form-wrapper">
            <div class="form-group title-form">
              <label>Title</label>
              <span class="empty-warning hidden" id="title-warning">Required</span>
              <div contenteditable="true" class="story-title">Untitled Story</div>
            </div>

            <div class="form-group description-form">
              <div class="form-wrapper">
                <label>Description</label>
                <span data-toggle="popover" class="popover-icon" id="description-tooltip" title="" data-original-title="Add a story description"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                <span class="empty-warning hidden" id="description-warning">Required</span>
              </div>
              <textarea type="text" name="title" class="story-description "></textarea>
            </div>

            <div class="form-group tags-form">
              <div class="form-wrapper">
                <label>Tags</label>
                <span data-toggle="popover" class="popover-icon" id="tags-tooltip" title="" data-original-title="Help readers find your story"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                <span class="empty-warning hidden" id="tag-empty-warning">Required</span>
              </div>
              <div class="tag-container">
                <div id="editable-tags">
                  <div class="component-wrapper" id="component-TagGrid-storyTags-/myworks/new"></div>
                </div>
                <div id="add-tag" class="tag-item with-icon on-add-tag">
                  <span>Add a tag</span><span class="fa fa-plus fa-wp-black " aria-hidden="true" style="font-size:12px;"></span>
                </div>
                <span id="tag-input-wrapper">
                <input id="tag-input" class="hidden on-tag-input" placeholder="Separate tags with a space" autocomplete="off">
              </span>
              </div>
            </div>

            <div class="form-group inline-form">
              <div class="form-wrapper">
                <label for="categoryselect">Genre</label>
                <span data-toggle="popover" class="popover-icon" id="category-tooltip" title="" data-original-title="Tell Wattpad the genre of your story"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                <select id="categoryselect" class="form-control ">
                  <option value="-1">Select a genre</option>
                    <option value="14">Action</option>
                    <option value="11">Adventure</option>
                    <option value="24">ChickLit</option>
                    <option value="6">Fanfiction</option>
                    <option value="3">Fantasy</option>
                    <option value="21">General Fiction</option>
                    <option value="23">Historical Fiction</option>
                    <option value="9">Horror</option>
                    <option value="7">Humor</option>
                    <option value="8">Mystery / Thriller</option>
                    <option value="16">Non-Fiction</option>
                    <option value="12">Paranormal</option>
                    <option value="2">Poetry</option>
                    <option value="19">Random</option>
                    <option value="4">Romance</option>
                    <option value="5">Science Fiction</option>
                    <option value="17">Short Story</option>
                    <option value="13">Spiritual</option>
                    <option value="1">Teen Fiction</option>
                    <option value="18">Vampire</option>
                    <option value="22">Werewolf</option>
                </select>
                <span class="empty-warning hidden" id="category-empty-warning">Required</span>
              </div>
            </div>
          </div>

          <div class="inline-form-wrapper">
            <div class="inline-form-row">
              <div class="form-group inline-form">
                <div class="form-wrapper">
                  <label>Language</label>
                  <span data-toggle="popover" class="popover-icon" id="language-tooltip" title="" data-original-title="What language is your story in?"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                  <select id="languageselect" class="form-control ">
                      <option value="1" selected="selected">English</option>
                      <option value="2">Français</option>
                      <option value="3">Italiano</option>
                      <option value="4">Deutsch</option>
                      <option value="5">Español</option>
                      <option value="6">Português</option>
                      <option value="38">Català</option>
                      <option value="19">Tiếng Việt</option>
                      <option value="18">Filipino</option>
                      <option value="20">Bahasa Indonesia</option>
                      <option value="22">Bahasa Melayu</option>
                      <option value="32">ภาษาไทย&lt;/option>
                      <option value="7">Русский</option>
                      <option value="15">Română</option>
                      <option value="23">Türkçe</option>
                      <option value="24">Česky</option>
                      <option value="14">Polski</option>
                      <option value="28">Magyar</option>
                      <option value="30">ελληνικά</option>
                      <option value="35">Eesti</option>
                      <option value="36">Latviešu</option>
                      <option value="37">Lietuvių</option>
                      <option value="39">Босански</option>
                      <option value="40">Српски</option>
                      <option value="41">Hrvatski</option>
                      <option value="43">Български</option>
                      <option value="44">Slovenčina</option>
                      <option value="42">Slovenščina</option>
                      <option value="45">Беларускі</option>
                      <option value="46">Українська</option>
                      <option value="26">Svenska</option>
                      <option value="27">Norsk</option>
                      <option value="34">Suomi</option>
                      <option value="29">Dansk</option>
                      <option value="13">Nederlands</option>
                      <option value="33">Íslenska</option>
                      <option value="12">简体中文&lt;/option>
                      <option value="8">繁體中文</option>
                      <option value="9">日本語&lt;/option>
                      <option value="10">한국어&lt;/option>
                      <option value="16">العربية</option>
                      <option value="53">ગુજરાતી</option>
                      <option value="17">עברית</option>
                      <option value="21">हिन्दी</option>
                      <option value="25">മലയാളം</option>
                      <option value="54">ଓଡ଼ିଆ&lt;/option>
                      <option value="31">فارسی</option>
                      <option value="55">ਪੰਜਾਬੀ</option>
                      <option value="56">অসমীয়া&lt;/option>
                      <option value="47">বাংলা&lt;/option>
                      <option value="48">اُردُو&lrm;</option>
                      <option value="49">தமிழ்&lt;/option>
                      <option value="50">Kiswahili</option>
                      <option value="51">Afrikaans</option>
                      <option value="57">मराठी</option>
                      <option value="11">Other</option>
                  </select>
                </div>
              </div>
              <div class="form-group inline-form copyright-form">
                <div class="form-wrapper">
                  <label>Copyright</label>
                  <span data-toggle="popover" class="popover-icon" id="copyright-tooltip" title="" data-original-title="Who owns your story?"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                  <select id="copyrightSelect" class="form-control ">
                      <option value="0">Not Specified</option>
                      <option value="1">All Rights Reserved</option>
                      <option value="2">Public Domain</option>
                      <option value="3">Creative Commons (CC) Attribution</option>
                      <option value="4">(CC) Attrib. NonCommercial</option>
                      <option value="5">(CC) Attrib. NonComm. NoDerivs</option>
                      <option value="6">(CC) Attrib. NonComm. ShareAlike</option>
                      <option value="7">(CC) Attribution-ShareAlike</option>
                      <option value="8">(CC) Attribution-NoDerivs</option>
                  </select>
                </div>
              </div>
            </div>

            <div class="form-group rating-form">
              <div class="form-wrapper">
                <label class="rating-label">Rating</label>
                <span data-toggle="popover" class="popover-icon" id="rating-tooltip" title="" data-original-title="Rate your story"><span class="fa fa-info fa-wp-lightergrey " aria-hidden="true" style="font-size:16px;"></span></span>
                <span class="toggle-prompt">Mature</span>
                <div class="onoffswitch ">
                  <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="mature-switch">
                  <label class="onoffswitch-label" for="mature-switch">
                    <div class="onoffswitch-inner">
                      <span class="on">ON</span>
                      <span class="off">OFF</span>
                    </div>
                    <span class="onoffswitch-switch"></span>
                  </label>
                </div>
              </div>

先感谢您!

标签: javascriptjavajqueryhtmlecmascript-5

解决方案


id您正在寻找的这些不是由他们自己生成的。

您需要分配id给您喜欢的字段。

我不喜欢使用id来实现css. id仅需要元素来实现并从标签中javascript获取值示例。input

您需要id在写下代码时进行分配,如以下示例所示html

注意事项

  1. 并非所有标签都有id.
  2. 大多数与用户输入相关的标签都有id.
  3. 没有 2 个元素/标签具有相同id的 .
  4. id不同类型元素的 's 用于不同目的,例如<div>, <span> id's 用于显示隐藏,而 as input id's 用于获取值。

HTML:

<!DOCTYPE html>
<html >
    <head>
        <meta charset="UTF-8">    
        <link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css" />
        <link rel="stylesheet" type="text/css" href="/css/app.css" />
        <link rel="icon" href="logo.jpg" />
        <title>Info</title>
    </head>
    <body>
        <div class="col-md-6 offset-md-3">
            <div class="col-md-6">
                <p class="btn btn-primary form-control" onclick="showForm('#addInfo')">Add Detail</p>
            </div>
            <div class="col-md-6">
                <p class="btn btn-primary form-control" onclick="showForm('#showInfo');getDetail();">Show Detail</p>
            </div>
            <!-- No need for `form` as will use JavaScript for Single Page Application -->
            <div id="addInfo" class="hide">
                <div id="data"></div>
                <div class="col-md-12 form-group">
                    <label for="addEmail">Email:</label>
                    <input id="addEmail" class="form-control" type="email">
                    <span id="addEmailError" class="hide error">Valid Email Required</span>
                </div>
                <div class="col-md-12 form-group">
                    <label for="addFname">First Name:</label>
                    <input id="addFname" class="form-control" type="text">
                    <span id="addFnameError" class="hide error">Valid First Name Required</span>
                </div>
                <div class="col-md-12 form-group">
                    <label for="addLname">Last Name:</label>
                    <input id="addLname" class="form-control" type="text">
                    <span id="addLnameError" class="hide error">Valid Last Name Required</span>
                </div>
                <div class="col-md-12 form-group">
                    <label for="addPhone">Phone:</label>
                    <input id="addPhone" class="form-control" type="text">
                    <span id="addPhoneError" class="hide error">Valid Phone Required</span>
                </div>
                <div class="col-md-12 form-group">
                    <label for="addGender">Gender:</label>
                    <select id="addGender" class="form-control">
                        <option value="">Select:</option>
                        <option value="male">Male</option>
                        <option value="female">Female</option>
                    </select>
                    <span id="addGenderError" class="hide error">Gender Required</span>
                </div>
                <div class="col-md-12 form-group">
                    <p class="btn btn-primary form-control" onclick="addInfo()">Submit</p>
                </div>
            </div>
            <!-- No need for `form` as will use JavaScript for Single Page Application -->
            <div id="showInfo" class="hide">
                <div id="showDetails" class="col-md-12"></div>
            </div>
        </div>
        <script type="text/javascript" src="/js/jquery.min.js"></script>
        <!-- `login.js` is only used in `login.ejs` -->
        <script type="text/javascript" src="/js/addInfo.js"></script>
        <script type="text/javascript" src="/js/getInfo.js"></script>
        <script type="text/javascript" src="/js/service.js"></script>
    </body>
</html>

addInfo.js

"use strict";

function addInfo() {
    // JavaScript uses `id` to fetch value
    let email               = $("#addEmail").val(),
        fName               = $("#addFname").val(),
        lName               = $("#addLname").val(),
        phone               = $("#addPhone").val(),
        gender              = $("#addGender").val();

    // Show error `span` when email is invalid
    if ( validateEmail(email) ) {
        $("#addEmailError").addClass("hide");
    } else {
        $("#addEmailError").removeClass("hide");
        return;
    }

    // Show error `span` when First Name is invalid
    if ( validateFname(fName) ) {
        $("#addFnameError").addClass("hide");
    } else {
        $("#addFnameError").removeClass("hide");
        return;
    }

    // Show error `span` when Last Name is invalid
    if ( validateLname(lName) ) {
        $("#addLnameError").addClass("hide");
    } else {
        $("#addLnameError").removeClass("hide");
        return;
    }

    // Show error `span` when Phone is invalid
    if ( validatePhone(phone) ) {
        $("#addPhoneError").addClass("hide");
    } else {
        $("#addPhoneError").removeClass("hide");
        return;
    }

    // Show error `span` when Gender is invalid
    if ( validateGender(gender) ) {
        $("#addGenderError").addClass("hide");
    } else {
        $("#addGenderError").removeClass("hide");
        return;
    }

    // Calling local API to set authentication
    // Everything in public is visible for hackers
    // Thus to hide auth calling local backend
    $.ajax({
        "url": "/v1/detail",
        "method": "POST",
        "data": {email, fName, lName, phone, gender}
    })
    .then( result => {
        // On success empty all the input fields.
        $("#addEmail").val('');
        $("#addFname").val('');
        $("#addLname").val('');
        $("#addPhone").val('');
        $("#addGender").val("");

        // Message to notify success submition
        alert("Successfully added user.");
        return;
    })
    .catch( err => {
        // Notify in case some error occured
        alert("An error occured.");
        return;
    });
}

getInfo.js

"use strict";

function getDetail () {

    // Request to get details of all user.
    $.ajax({
        "url": "http://localhost:4000/v1/detail",
        "method": "GET"
    })
    .then( result => {
        // On success using table to display data.
        // This table is dynamic.
        let table = `<div class="alert alert-success" role="alert">
                        Details fetched successfully.
                    </div>
                    <table class="table">
                        <thead>
                            <tr>
                                <th scope="col">#</th>`;

        let headers = [];

        // Setting dynamic headers to ease work at frontend in case field changes
        for ( let key in result[0] ) headers.push(key);
        for ( let h of headers ) table += `<th scope="col">` + h + `</th>`;

        table += `          </tr>
                        </thead>
                        <tbody>`;
        let i = 1;

        // Dynaic rows of table based upon headers.
        for(let row of result) {
            table += `      <tr>
                                <th scope="row">` + i + `</th>`;

            for (let key of headers) table += `<td>` + row[key] + `</td>`;

            table += `      </tr>`;
            i++;
        }

        table += `      </tbody>
                    </table>`;

        // Loading dynamic table into our static HTML page.
        $("#showDetails").html(table);
    })
    .catch( err => {
        // If error setting dynamic error
        let data = `<label class="alert alert-warning">Unable to fetch details</label>`;

        // Loading dynamic error into our static HTML page
        $("#showDetails").html(data);
    })

}

service.js

"use strict";

/**
 * Common services used by all the other scripts
 * All these are generic functions
 *  
*/

// To toggle between different views
function showForm (id) {
    // Hide all views
    $("#addInfo").addClass("hide");
    $("#showInfo").addClass("hide");

    // Show the view user had clicked
    $(id).removeClass("hide");
}

// Validate Email based upon pattern
function validateEmail (email) {
    if ( email && email.match(/^([A-z0-9_.]{2,})([@]{1})([A-z]{1,})([.]{1})([A-z.]{1,})*$/) ) {
        return true;
    }
    return false;
}

// Validate First Name based upon pattern
function validateFname (fName) {
    if ( fName && fName.match(/^([A-z]{2,})*$/) ) {
        return true;
    }
    return false;
}

// Validate Last Name based upon pattern
function validateLname (lName) {
    if ( lName && lName.match(/^([A-z]{2,})*$/) ) {
        return true;
    }
    return false;
}

// Validate Phone based upon pattern
function validatePhone (phone) {
    if ( phone && phone.match(/^([0-9]{10})*$/) ) {
        return true;
    }
    return false;
}

// Validate Gender based upon pattern
function validateGender (gender) {
    if ( gender && gender.match(/^([A-z]{4,6})*$/) && (gender === "male" || gender === "female") ) {
        return true;
    }
    return false;
}

推荐阅读