我试图通过使用QueryString
传递值来填充html页面,并且我的值传递给QueryString
但是我对JS的 NO 知识的限制正在阻止我无法推断为什么页面上的文本框没有填充传递的值。
这是我的HTML显示JS功能
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="Test.aspx.cs" Inherits="TestProject.Pages.Test" %>
<asp:Content ID="ContentHeaderID" ContentPlaceHolderID="MainContent" runat="Server">
<div class="BackgroundOfWhite">
<font class="BB">Select Instructor:</font>
<asp:DropDownList runat="server" ID="dropdown1"
AutoPostBack="true" CssClass="DropDownLists" ></asp:DropDownList>
<asp:Button runat="server" ID="btnOpenPage"
CssClass="Buttons" Text="Open Page With Params" OnClick="btnLoadPage_Click" />
<div class="White"></div>
</div>
<script type="text/javascript">
document.getElementById('InstructorName').value = Instructor;
</script>
这是我的C#信息
protected void btnLoadPage_Click(object sender, EventArgs e)
{
string openthis = "http://whiskeyinthewatertestofsendingdata.html";
string Instructor = "Tyler Moore";
Response.Redirect(openthis+"?"+Instructor);
}
我觉得问题是我实际上并没有调用JS函数来填充hmtl页面上的文本框,但是我该怎么办呢?
修改
这是文本框后面的html
<input id="InstructorName" name="InstructorName" maxlength="255" style="width: 240px;">
编辑2
我看到页面的前几行HTML ...这是否意味着在页面加载时它们强制字段具有空值(这当然意味着它们无法实现我所追求的目标)
<head>
<script type="text/javascript">
var forcefieldstonull =
{
"InstructorName":null,
"InstructorClass":null,
"InstructorBuilding":null,
"InstructorRoomNum":null
};
答案 0 :(得分:2)
试试这个:
protected void btnLoadPage_Click(object sender, EventArgs e)
{
string openthis = "http://whiskeyinthewatertestofsendingdata.html";
string Instructor = "Tyler Moore";
Response.Redirect(openthis+"?Instructor="+Instructor);
}
然后,在您的页面上,更改您的javascript函数,就像这样:
<script type="text/javascript">
document.getElementById('InstructorName').value = '<%=Request.QueryString["Instructor"]%>';
</script>
答案 1 :(得分:1)
在更改页面元素之前,必须等待页面完全加载。 虽然javascript位于底部,但我想到它可能会在渲染InstructorName div之前执行。
您应该使用window.onload()将其包围,以确保在页面完全加载后执行它。 https://developer.mozilla.org/de/docs/Web/API/GlobalEventHandlers/onload
此外,如果脚本出现错误,您只需检查浏览器控制台即可。