gpt4 book ai didi

javascript - 自动点击按钮并开始

转载 作者:行者123 更新时间:2023-11-29 18:05:09 25 4
gpt4 key购买 nike

现在这有选项 onclick start function initcart() 和 startloop() 但我需要在页面加载时自动点击按钮。我正在尝试 document.getElementsByClassName("prev")[0].click();但这不起作用。有什么选择。

HTML

<body onload='draw();'></body> 
<canvas id="motion" width="1000" height="200"></canvas>
<div style="position: absolute; top: 7px; left: 7px;" >
<input id="loop" onclick="javascript:initCars(); startLoop();" type="button" class="prev" value="Start"> </div>

CSS

.prev{
background-color: rgba(0, 0, 0, 0.7);
width:1000px;
height:200px;
font-size:40px;
color:#ffffff;
}
.prev:focus {
background-color:transparent;
font-size:0px;
color:#ffffff;
width:1000px;
height:200px;
}

JS

/*jslint plusplus: true, sloppy: true, indent: 4 */
(function () {
"use strict";
// this function is strict...
}());

// RequestAnimFrame: a browser API for getting smooth animations
window.requestAnimFrame = (function() {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();

// Globals
var canvas = null,
ctx = null,
background = null,
car_sprite = null,
game_data = null,
CAR_WIDTH = 100,
CAR_HEIGHT = 37,
STEP_COUNT_MILLISECONDS = 1000 / 30,
RACE_LENGTH = 20,
RACE_FINISH_LINE_X = 770,
iTime = 0,
iFinishPlace = 1,
random_graph;

function clearCanvas() {

// clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
}

function drawBackground() {

clearCanvas();
ctx.drawImage(background, 0, -400);

loadCarSprite();
}

function loadBackground() {

// Load the timer
background = new Image();
background.src = 'http://www.upslike.net/imgdb/race-scence-d9894d.png';
background.onload = drawBackground;
}

function setupGameData() {

var json =
{
cars:
[
{
"colour": 'blue',
"x": 0,
"y": 50,
"spritex": 0,
"spritey": 0,
"graph": null,
"step": 77,
"position": null,
"speed": 10,
"speed_late": 100
},
{
"colour": 'green',
"x": 0,
"y": 70,
"spritex": 0,
"spritey": 37,
"graph": null,
"step": 65,
"position": null,
"speed": 15,
"speed_late": 50
},
{
"colour": 'red',
"x": 0,
"y": 90,
"spritex": 0,
"spritey": 74,
"graph": null,
"step": 53,
"position": null,
"speed": 15,
"speed_late": 15
},
{
"colour": 'green',
"x": 0,
"y": 110,
"spritex": 0,
"spritey": 111,
"graph": null,
"step": 39,
"position": null,
"speed": 20,
"speed_late": 20
}
],
graphs:
[
[0,5,10,20,40,60,70],
[0,10,20,30,40,50,60],
[0,20,39,40,50,55,58],
[0,10,20,30,40,50,55],
[0,25,45,47,49,50,52],
[0,10,20,29,38,45,50],
[0,15,20,25,30,40,45],
[0,2,4,8,20,30,40],
[0,5,10,15,20,25,30],
[0,1,3,14,15,22,30],
[0,5,11,14,17,22,25],
[0,20,30,44,67,72,90],
[0,2,7,24,47,52,65],
[0,2,9,20,40,52,70]
]
};

random_graph = Math.floor( Math.random() * json.graphs.length );

return json;
}

function drawCar(car) {

// Draw the car onto the canvas

ctx.drawImage(car_sprite,
car.spritex, car.spritey,
CAR_WIDTH, CAR_HEIGHT,
car.x + car.step, car.y,
CAR_WIDTH, CAR_HEIGHT);

drawText(car);
}

function drawCars() {

var iCarCounter;

for(iCarCounter = 0; iCarCounter < game_data.cars.length; iCarCounter++) {

drawCar(game_data.cars[iCarCounter]);
}
}

function initCar(current_car) {

current_car.graph = random_graph;

}

function initGameState() {

var iCarCounter;

for(iCarCounter = 0; iCarCounter < game_data.cars.length; iCarCounter++) {

initCar(game_data.cars[iCarCounter]);

}
}

function getPositionAtTime(graph_index, percentageElapsed, current_car) {

var graph = game_data.graphs[graph_index],
iNumberOfGraphPoints = graph.length,
iGraphPosition = null,
iFloor = null,
iCeil = null,
p = null;
position = null;

graph = graph.map( function( val, i ) {

if ( i === 0 ) {

return val;

}

var car_speed = undefined === current_car.speed ? 1 : current_car.speed,
car_speed_late = undefined === current_car.speed_late ? car_speed : current_car.speed_late;

return ( i < Math.floor( graph.length / 2 ) ) ? car_speed : car_speed_late;

});

iGraphPosition = (iNumberOfGraphPoints / 100) * percentageElapsed;

iFloor = Math.floor(iGraphPosition);
iCeil = Math.ceil(iGraphPosition);

if(iGraphPosition === iFloor) {

position = graph[iFloor];

} else if(iGraphPosition === iCeil) {

position = graph[iCeil];

} else {

p = (graph[iCeil] - graph[iFloor]) / 100;

position = ((iGraphPosition - iFloor) * 100) * p + graph[iFloor];

}

return position;

}

function redrawRoadSection() {

ctx.drawImage(background, 0, 400, 1000, 200, 0, 400, 1000, 200);
}

function graphPosToScreenPos() {

return (900 / 100) * (position / 60 * 100);
}

function updateDebugWindow() {

// Debug window
var time = document.getElementById('time');

if(time !== null) {

time.value = iTime / 1000;
}

}


function drawText(current_car) {

if(current_car.position !== null) {

ctx.strokeStyle = "black";
ctx.font = "normal 12px Facebook Letter Faces";
ctx.strokeText(current_car.position, RACE_FINISH_LINE_X + current_car.step + 110, current_car.y + 25);

}

}

function moveCar(iCarCounter) {

var current_car = game_data.cars[iCarCounter],
seconds = iTime / 1000,
percentageElapsed = (seconds / RACE_LENGTH) * 100,
a = 20,
velocity = 2,
position = getPositionAtTime(current_car.graph, percentageElapsed,current_car);

if(current_car.x < RACE_FINISH_LINE_X) {

current_car.x = graphPosToScreenPos(position) + (velocity * seconds) + (1/2 * a * Math.pow(seconds, 2));

}
else {

current_car.x = RACE_FINISH_LINE_X;

if(current_car.position === null) {

current_car.position = iFinishPlace++;
}
}

drawCar(current_car);
}

function initCars() {

game_data = setupGameData();

initGameState();
drawCars();
}

function stopLoop() {

iTime = 0;
iFinishPlace = 1;
}


function startRace() {
clearCanvas();
ctx.drawImage(background, 0, -400);

var iCarCounter;

redrawRoadSection();

for(iCarCounter = 0; iCarCounter < game_data.cars.length; iCarCounter++) {

moveCar(iCarCounter);

}

updateDebugWindow();

if(iFinishPlace > 4) {

stopLoop();

} else {

iTime += STEP_COUNT_MILLISECONDS;

requestAnimFrame(startRace);
}

}

function startLoop() {

stopLoop();

requestAnimFrame(startRace);
}

function loadCarSprite() {

// Load the timer
car_sprite = new Image();
car_sprite.src = 'http://www.upslike.net/imgdb/car-sprite-f0d812.gif';
car_sprite.onload = initCars;
}

function draw() {

// Main entry point got the motion canvas example
canvas = document.getElementById('motion');

// Canvas supported?
if (canvas.getContext) {

ctx = canvas.getContext('2d');

loadBackground();

} else {
alert("Canvas not supported!");
}
}

CodePen

最佳答案

如果您在 js 文件中使用 jQuery,您可以这样做:

$(document).ready(function() {
initCars();
startLoop();
});

如果您只使用普通的 javascript,那么您必须执行几个步骤:

对于较新的浏览器:

document.addEventListener("DOMContentLoaded", function() {
initCars();
startLoop();
});

对于 IE8:

document.attachEvent("onreadystatechange", function(){
if (document.readyState === "complete"){
document.detachEvent( "onreadystatechange", arguments.callee );
initCars();
startLoop();
}
});

关于javascript - 自动点击按钮并开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31868070/

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