将 onclick 按钮与简单的 JS 函数链接时出现问题

Problem when linking onclick button with a simple JS function

我一直在尝试将一些 HTML/CSS 功能应用于您在下面看到的简单 JS 代码,其中包括返回基于两个数组的随机句子。

我想创建一个简单的 onclick 按钮来显示生成的句子,但我仍然无法让它工作。你有什么想法或线索吗?我已经设法用 variables/text 完成了它,但是在访问函数时我遇到了一些问题,这当然是程序的重点。

提前感谢大家的帮助。

JS:

const personArr = ["Father Burgundy", "Constable Grey"];
const locationArr = ["the sauna", "the larder"];

const selectArr = (array) => {
 return(array[Math.floor(Math.random()*array.length)]);
}

const createMessage = () => {
 const message = "It was " + selectArr(personArr) + " in " + selectArr(locationArr)"!";
 return message;
};

const init = () => {
 const message = createMessage();
 console.log(message);
};

init();

----------------------------

function demo() {
 document.getElementById("output").innerHTML = init();
}

HTML:

<button id="btn" onclick="demo()">Click here!</button>
<p id="output"></p>

您只需要 return 来自 init() 函数的值,所以这是一个有效的 jsfiddle。

https://jsfiddle.net/vuks89/2cy1fbkd/

const init = () => {
 const message = createMessage();
 console.log(message);
 return message;
};

此外,我不确定您为什么需要在定义后调用 init();。 如果只是为了这个用例,它可能是不必要的,因为一旦按钮被点击它就会被调用。

Return init() 中的消息并在最后一个字符串之前添加 + createMessage()

const personArr = ["Father Burgundy", "Constable Grey"];
const locationArr = ["the sauna", "the larder"];

const selectArr = (array) => {
 return(array[Math.floor(Math.random()*array.length)]);
}

const createMessage = () => {
 const message = "It was " + selectArr(personArr) + " in " + selectArr(locationArr) + "!";
 return message;
};

const init = () => {
 const message = createMessage();
 console.log(message);
  return message;
};

function demo() {
 document.getElementById("output").innerHTML = init();
}
<button id="btn" onclick="demo()">Click here!</button>
<p id="output"></p>