gpt4 book ai didi

javascript - 我为事件监听器生成了一个构造函数。但它没有按照我想要的方式工作

转载 作者:行者123 更新时间:2023-12-02 23:15:04 25 4
gpt4 key购买 nike

我正在使用纯 JavaScript 创建一个视频切换页面。每当我单击禁用控件按钮时。控件应该被禁用。单击启用 Btn 即可启用。我听说过 DRY 原则。所以要完全遵循它。我为事件监听器创建了一个构造函数,在我向其传递“元素”、“事件”、“操作”参数后,该函数应该可以工作。

最初,我的代码中有很多错误。通过,我即兴发挥并使其发挥作用。 addEventListener 附加到按钮,它也给我控制台日志。但该操作并未得到执行。我不知道为什么。请帮忙。提前致谢。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Player</title>

<style></style>

<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha256-YLGeXaapI0/5IgZopewRJcFXomhRMlYYjugPLSyNjTY="
crossorigin="anonymous"
/>

</head>
<body>
<h2 class="text-warning text-center">
Video Player DOM Manipulation Using using Pure JS
</h2>
<p class="text-center">I have used Dry Principle so that code is compact</p>
<div class="container">
<div class="row">
<div class="col-md-6 mx-auto">
<video
class="mx-auto"
src="video\your_video.mp4"
width="500px"
autoplay="true"
controls
></video>
</div>
</div>

<div class="row mb-5">
<div class="col-md-6 mx-auto">
<p class="text-warning font-weight-bold">Controls :-</p>
<button class="btn btn-sm btn-success enableBtn">Enable</button>
<button class="btn btn-sm btn-success disableBtn">Disable</button>
</div>
</div>
</div>

<script>
// window.addEventListener("DOMContentLoaded", function() {
var fnConstruct = function(element, event, action) {
console.log(element);
console.log(event);
// console.log(action);
document
.querySelector(element)
.addEventListener(event, function() {
console.log('click');
console.log(action);
action;
});
};

var enableControls =
'document.querySelector("video").removeAttribute("controls");document.querySelector("video").setAttribute("controls", "");';
fnConstruct(".enableBtn", "click", enableControls);

var disableControls =
'document.querySelector("video").removeAttribute("controls");';
fnConstruct(".disableBtn", "click", disableControls);


// });
</script>
</body>
</html>

注意:- 请将视频 src 属性替换为系统中您想要的任何视频。

最佳答案

尝试传递函数而不是字符串作为 action 并在 fnConstruct 中调用它:

var fnConstruct = function(element, event, action) {
console.log(element);
console.log(event);
document
.querySelector(element)
.addEventListener(event, function() {
console.log('click');
action();
});
};

fnConstruct(".enableBtn", "click", function() {
document.querySelector("video").removeAttribute("controls");
document.querySelector("video").setAttribute("controls", "");
});

fnConstruct(".disableBtn", "click", function() {
document.querySelector("video").removeAttribute("controls");
});

关于javascript - 我为事件监听器生成了一个构造函数。但它没有按照我想要的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57197399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com