【问题标题】:Javascript is not working innerhtmlJavascript 不起作用
【发布时间】:2017-04-27 04:33:04
【问题描述】:

我有简单的 javascript。我只需要从文本框中获取日期并传递给标签以用于其他目的。但这里有问题。我能够提醒从文本框中获取的内容,但是当我尝试将其加载到标签中时。它显示为空。

function get_WlcData() {
    if ($('#DropDownList1').val() == 'Required') {
        document.getElementById("wlcboard").style.display = '';
    } else {
        document.getElementById("wlcboard").style.display = 'none';
    }    
    var x = document.getElementById("reservation").value;
    alert(x);
    document.getElementById("lblreserve").innerHTML = "testing";
    document.getElementById("lblreserve1").innerHTML = "testasdad";
}

这里是 HTML

 <input type="text" name="reservation" id="lblreserve" class="form-control col-md-7 col-xs-12" />
 <asp:Label ID="lblreserve1" runat="server" CssClass="labelForm" Visible="False"></asp:Label>

【问题讨论】:

  • 检查 developer 工具控制台是否有错误...您是否加载 jquery 库?另外,你在哪里调用函数get_WlcData
  • 我真是个笨蛋...asp:Label ID="lblreserve1"...生成的 ID 不会首先是lblreserve1(因为这就是 ASP“工作”的方式) - 并且,Visible="False" 将意味着“控件”甚至不会出现在呈现的 HTML 中(换句话说,整个 Label 控件甚至不会存在于浏览器中)
  • 嗨,我已经尝试将可见更改为 true,它仍然是一样的。但是,当用户在下拉列表中选择时,会调用 get_WlcData。
  • I have tried to change the visible to true it still the same - 在我所说的所有事情中,你选择那个......你检查过控制台吗?你加载jquery吗?你读过我说那个 ASP:label 的 ID 不是你所期望的吗? - 我知道将“假”改为“真”很容易,但这只是问题的一小部分(但非常重要)
  • 在开发人员工具控制台中出现错误 - 未捕获的 TypeError:无法在 HTMLSelectElement.onchange (EMForm.aspx:496) 的 get_WlcData (EMForm.aspx:314) 处设置属性“innerHTML”为空

标签: javascript html asp.net vb.net


【解决方案1】:

唯一想到的是您引用的 ID 不存在

var x = document.getElementById("reservation").value;

在这段代码中,您正在寻找 id="reservation" 的值,但该元素在您提供的 HTML 中不存在。那不是 getElementById("lblreserve") - 因为这是输入元素的 ID?

它也可能没有显示,因为您的标签设置为 Visible="False",这意味着该值可能正在设置,但它没有显示,因为它隐藏在视图之外。

【讨论】:

  • 您好,预订存在
  • 它能够“alert(x)”并向我显示正确答案。可见的不相关。即使我将其更改为 true。在我的 javascript 中,它应该能够显示文本 '= "testing";'或'=“testasdad”'
  • @jaromanda-x 是正确的,因为 ASP 会破坏 ID,因此您的 javascript 可能无法正常工作,因为标签 ID 在被推送到页面之前已更改。一种解决方案是使用 getelementsbyname 然后使用循环,但它会返回一个对象,然后您必须迭代该对象,这很痛苦。使用document.getElementById(&lt;% =lblreserve1.ClientID %&gt;").innerHTML = "testasdad"; 的建议当然应该有效
  • 嗨,尽管我使用的是普通的 html,但它的 id 不是 mangles。
  • @user3759016 加载页面时,右键单击标签并检查元素(在 Google Chrome 中运行良好)。在元素查看器中,输入是否仍然具有相同的 ID,或者在呈现到页面后 ID 是否不同?
【解决方案2】:

首先您必须显示隐藏标签,然后将文本写入该标签

  document.getElementById("lblreserve").style.display= "inline";
 document.getElementById("lblreserve").innerHTML = "testing";

使用

写入文本框值
document.getElementById('lblreserve').value='new value';

【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2015-11-07
    • 2021-04-19
    • 2013-06-28
    • 2017-11-29
    • 2011-02-28
    • 2020-10-03
    • 2012-08-02
    相关资源
    最近更新 更多