What's new

Welcome to the forum 👋, Visitor

To access the forum content and all our services, you must register or log in to the forum. Becoming a member of the forum is completely free.

Html and JavaScript refuses to run properly. (Solved)

Graeme Lawrie

New member
Joined
Apr 10, 2024
Messages
1
Reaction score
0
HTML Coins
0
Hello everyone. Racking my brain and I know I'm missing something simple.

I have a simple index.html and a supporting script.js this links to graemelawrie.co.uk which is my test server.

The page works fine in testing local, but for the life of me I cannot get it to work online.

Can anyone put me out of my misery? the site is live and not working :( at Graemelawrie.co.uk

Html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Custom Image Generator</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
display: flex;
justify-content: center;
}
.container {
background: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
display: flex;
max-width: 800px;
}
.options {
flex: 1;
padding-right: 20px;
}
.graphic {
flex: 1;
text-align: center;
}
label, .explanation {
margin-top: 10px;
display: block;
color: #333;
}
input[type="number"], input[type="text"], select, input[type="color"], input[type="file"] {
padding: 10px;
margin-top: 5px;
border-radius: 5px;
border: 1px solid #ddd;
width: calc(100% - 22px);
}
input[type="button"] {
background-color: #007bff;
color: white;
padding: 10px 15px;
border: none;
border-radius: 5px;
cursor: pointer;
margin-top: 10px;
}
input[type="button"]:hover {
background-color: #0056b3;
}
.form-section {
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="options">
<h2>Options</h2>
<form id="variableForm">
<div class="form-section">
<label for="variable1">Select Variable 1:</label>
<select id="variable1">
<option value="explore">Explore</option>
<option value="deepen">Deepen</option>
<option value="apply">Apply</option>
<option value="teach">Teach</option>
<option value="lead">Lead</option>
</select>
<span class="explanation">Choose the first variable to influence the background image.</span>
</div>

<div class="form-section">
<label for="variable2">Select Variable 2:</label>
<select id="variable2">
<option value="informal">Informal</option>
<option value="training">Training</option>
<option value="certified">Certified</option>
<option value="membership">Membership</option>
<option value="qualification">Qualification</option>
</select>
<span class="explanation">Choose the second variable to further refine the background image choice.</span>
</div>

<div class="form-section">
<label for="overlayText">Overlay Text (Line 1):</label>
<input type="text" id="overlayText" placeholder="Enter overlay text">
<span class="explanation">Enter the first line of text you want to overlay on the image.</span>
</div>

<div class="form-section">
<label for="overlayText2">Overlay Text (Line 2):</label>
<input type="text" id="overlayText2" placeholder="Enter second line of text">
<span class="explanation">Enter the second line of text to display below the first line.</span>
</div>

<div class="form-section">
<label for="overlayText3">Overlay Text (Line 3):</label>
<input type="text" id="overlayText3" placeholder="Enter third line of text">
<span class="explanation">Enter the third line of text to display below the second line.</span>
</div>

<div class="form-section">
<label for="textPosY">Text Vertical Position (px):</label>
<input type="number" id="textPosY" value="260">
<span class="explanation">Adjust the vertical position of your text on the image.</span>
</div>

<div class="form-section">
<label for="textColour">Text Colour:</label>
<input type="color" id="textColour" value="#000000">
<span class="explanation">Choose the colour of your overlay text.</span>
</div>

<div class="form-section">
<label for="logoUpload">Upload Logo:</label>
<input type="file" id="logoUpload" accept="image/*">
<span class="explanation">Upload a logo to display on the image. PNG or JPEG recommended.</span>
</div>

<div class="form-section">
<label for="logoPosY">Logo Vertical Position (px):</label>
<input type="number" id="logoPosY" value="50">
<span class="explanation">Adjust the vertical position of your logo on the image.</span>
</div>

<input type="button" value="Generate" onclick="generateImage()">
</form>
</div>

<div class="graphic">
<h2>Graphic</h2>
<canvas id="imageCanvas" width="400" height="400" style="border: 1px solid #ddd;"></canvas>
</div>
</div>

<script src="script.js"></script>
</body>
</html>

And my script:

function generateImage() {
const variable1 = document.getElementById('variable1').value;
const variable2 = document.getElementById('variable2').value;
const overlayText = document.getElementById('overlayText').value;
const overlayText2 = document.getElementById('overlayText2').value;
const overlayText3 = document.getElementById('overlayText3').value;
const textPosY = parseInt(document.getElementById('textPosY').value, 10);
const textColour = document.getElementById('textColour').value;
const logoPosY = parseInt(document.getElementById('logoPosY').value, 10);
const logoUpload = document.getElementById('logoUpload').files[0];

const canvas = document.getElementById('imageCanvas');
const ctx = canvas.getContext('2d');

const image = new Image();
image.onload = function() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);

// Center text horizontally
ctx.font = '20px Arial';
ctx.fillStyle = textColour;
ctx.textAlign = 'center'; // Center the text horizontally
ctx.fillText(overlayText, canvas.width / 2, textPosY);
ctx.fillText(overlayText2, canvas.width / 2, textPosY + 30); // Adjust vertical spacing
ctx.fillText(overlayText3, canvas.width / 2, textPosY + 60); // Adjust vertical spacing

if (logoUpload) {
const reader = new FileReader();
reader.onload = function(e) {
drawLogo(ctx, e.target.result, logoPosY);
};
reader.readAsDataURL(logoUpload);
}
};
image.src = selectImage(variable1, variable2);
}

function selectImage(variable1, variable2) {
return `${variable1}_${variable2}.png`;
}

function drawLogo(ctx, logoImage, posY) {
const logo = new Image();
logo.onload = function() {
// Adjust logo size and center it horizontally
const scaledWidth = logo.width / 2;
const scaledHeight = logo.height / 2;
const posX = (ctx.canvas.width - scaledWidth) / 2;
ctx.drawImage(logo, posX, posY, scaledWidth, scaledHeight);
};
logo.src = logoImage;
}// JavaScript Document
 

Theme customization system

You can customize some areas of the forum theme from this menu.

  • Wide/Narrow view

    You can control a structure that you can use to use your theme wide or narrow.

    Grid view forum list

    You can control the layout of the forum list in a grid or ordinary listing style structure.

    Picture grid mode

    You can control the structure where you can open/close images in the grid forum list.

    Close sidebar

    You can get rid of the crowded view in the forum by closing the sidebar.

    Fixed sidebar

    You can make it more useful and easier to access by pinning the sidebar.

    Close radius

    You can use the radius at the corners of the blocks according to your taste by closing/opening it.

  • Choose the color combination that reflects your taste
    Background images
    Color gradient backgrounds
Back