【问题标题】:Set label text using JavaScript on a .aspx page [duplicate]在 .aspx 页面上使用 JavaScript 设置标签文本 [重复]
【发布时间】:2017-05-20 09:06:10
【问题描述】:

我已将此 JavaScript 代码放在文件 JavaScript.js 中:

var target = Number(prompt("Enter The New Number"));
function monthName(){
    var month = target == 1 ? month = "January" : target == 2 ? month = "February" : target == 3 ? month = "March" : target == 4 ? "April" : target == 5 ? "May" : target == 6 ? "June" : target == 7 ? "July" : target == 8 ? "August" : target == 9 ? "September" : target == 10 ? "October" : target == 11 ? "November" : target == 12 ? "December" : "Unknown Month";
    return month;
}
document.getElementById('yes').html= monthName();

并添加了具有此特定 ID 的标签。

<label id="yes" ></label>

【问题讨论】:

  • 你的三元正在评估像var month = month = "January",等等......
  • @epascarello 我也尝试了 innerHTML 、 InnerText 、 TextContent 但什么也没发生。
  • 那么您的控制台中的错误是什么。我的猜测是你有一个未定义或空的错误。
  • 旁注:不要像这样嵌套条件运算符。它会使代码难以阅读。你可以在这里使用一个名称数组。

标签: javascript html asp.net


【解决方案1】:
  1. 输入核对号码
  2. 如果输入可接受,则使用数组
  3. 分配给innerHTML(区分大小写)
  4. 函数只能在标签存在于 DOM 之后运行
  5. 请注意,JS 月份是基于 0 的(此处不相关)

function monthName(month) {
  month = month.trim();
  if (isNaN(month) || month == "" || month < 0 || month > 12) return "unknown";
  return ["unknown", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][month];
}
// this needs to be after the label exists or wrapped in 
// window.onload=function() {...} or similar 
document.getElementById('yes').innerHTML = monthName(prompt("Enter The New Number", ""));
&lt;label id="yes"&gt;&lt;/label&gt;

【讨论】:

  • 我还要添加month &lt; 0 的条件,因为你确实有month &gt; 12
【解决方案2】:

正如@epascarello 所指出的,使用.innerHTML 而不是.html

Element.innerHTML 属性设置或获取描述元素后代的 HTML 语法。

阅读Element.innerHTML - Web APIs | MDN

工作 sn-p:

document.addEventListener("DOMContentLoaded", function(event) {

  var target = Number(prompt("Enter The New Number"));

  function monthName() {
    var month = target == 1 ? month = "January" : target == 2 ? month = "February" : target == 3 ? month = "March" : target == 4 ? "April" : target == 5 ? "May" : target == 6 ? "June" : target == 7 ? "July" : target == 8 ? "August" : target == 9 ? "September" : target == 10 ? "October" : target == 11 ? "November" : target == 12 ? "December" : "Unknown Month";
    return month;
  }

  document.getElementById('yes').innerHTML = monthName();

});
&lt;label id="yes"&gt;&lt;/label&gt;

作为对您的评论的回应,将您现有的 JavaScript 代码添加到 DOMContentLoaded 的事件侦听器中,并修复 .innerHTML,以确保它在 DOM 内容加载后执行。确保在 DOMContentLoaded 事件处理程序中使用 @mplungjan 的 JavaScript 代码,因为它写得很好并且比我的更好。

【讨论】:

  • 已经试过了。
  • @RajanMishra 但是这个演示有效——你试过了吗?虽然我仍然会用"January" 替换不必要的month = "January" 等。
  • @RajanMishra 请详细说明使用我的代码后出现的问题。 JS 控制台中的任何错误?任何其他意外行为?
  • @RahulDesai 是的,谢谢,确实有效。
  • @RajanMishra 很高兴听到这个消息。确保在 DOMContentLoaded 事件处理程序中使用 @mplungjan 的 JS 代码,因为它写得很好并且比我的更好。
猜你喜欢
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
相关资源
最近更新 更多