javascript - 网页显示提示()输入未定义。我缺少什么?

标签 javascript onclicklistener

尝试获取用户输入(即 hsl(100, 50%, 60%))值并在 div 中显示颜色和值。

我只编码了几个月,而且我对 javascript 很陌生,所以如果这是显而易见的,我提前道歉。

我相信我的函数 hslCode 出了问题。

/* Global variables. */
var newColour;
var newHue;

function hslCode(hue, saturation, lightness) {
  return "hsl(" + hue + ", " + saturation + "%, " + lightness + "%)";
}

function init() {
  /* Event Handlers */
  document.getElementById('choose').onclick = function() {
    prompt();
  }
  document.getElementById('choose').onclick = function() {
    newColour = prompt("Please enter a hsl color. For example: hsl(180 50 50)");
    newHue = hslCode(newColour);
  }
  document.getElementById('choose').onclick = function() {
    document.getElementById('colourBox').style.backgroundColor = newHue;
    document.getElementById('colourBox').innerHTML = newHue;
  }
}

window.onload = init;
<body>
  <h2 id="theOne">Colour Choice</h2>

  <p><button id="choose">Click to enter the hue</button></p>

  <div id="colourBox"> </div>
</body>

最佳答案

有几个问题:

  1. 您通过分配三次点击处理程序来覆盖您的点击处理程序;仅使用最后一个。您可能想将它们结合起来(嗯,后两个;第一个没有做任何有用的事情)。

  2. 您的 hslCode 函数需要并使用三个参数,但这里:

    newHue = hslCode(newColour);
    

    你只传递一个参数。

    如果您的意思是让用户输入所有三个并用空格分隔的内容,则需要进行处理,例如:

    var parts = newColour.split(" ");
    newHue = hslCode(parts[0], parts[1], parts[2]);
    
  3. newHuenewColour 不需要是全局变量。

更新的代码片段:

function hslCode(hue, saturation, lightness) {
  return "hsl(" + hue + ", " + saturation + "%, " + lightness + "%)";
}

function init() {
  document.getElementById('choose').onclick = function() {
    var newColour = prompt("Please enter a hsl color. For example: hsl(180 50 50)");
    var parts = newColour.split(" ");
    var newHue = hslCode(parts[0], parts[1], parts[2]);
    document.getElementById('colourBox').style.backgroundColor = newHue;
    document.getElementById('colourBox').innerHTML = newHue;
  }
}

window.onload = init;
<body>
  <h2 id="theOne">Colour Choice</h2>

  <p><button id="choose">Click to enter the hue</button></p>

  <div id="colourBox"> </div>
</body>

关于javascript - 网页显示提示()输入未定义。我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225821/

相关文章:

java - 无法在recyclerview(cardview)上设置onclick

java - 在按钮单击时添加一个文本字段到第二个主要 Activity

java - setOnClickListener 错误

即使将其可见性设置为 GONE,Android View 仍会获得 OnClick()

Javascript new Date() 返回 1969 年 12 月 31 日

javascript - Chrome 扩展程序 : URL permission not working

javascript - 使用 jQuery 选择除标记组中的所有子项之外的所有子项

javascript - $ionicScrollDelegate.resize() 不起作用

用于增强参数化构建的 Javascript

javascript - 在另一个点击事件之后添加点击事件