increase or decrease image size based on keystrokes | XM Community
Solved

increase or decrease image size based on keystrokes

  • 22 February 2020
  • 1 reply
  • 7 views

Badge +3
Hello, I would like the size of an image to increase or decrease depending on whether the person hits the "I" or "M" key.

I would like to reverse the keys for some questions/images. Each image is in a separate question.

Thanks-
icon

Best answer by profjm 28 February 2020, 19:06

View original

1 reply

Badge +3
Can't take credit for this, but it works. You need to replace #$# with the specific image tag from Qualtrics. Below shows place keepers for two images following this "const images = ["


Qualtrics.SurveyEngine.addOnReady(function()
{
(function() {
const images = [
"https://survey.az1.qualtrics.com/CP/Graphic.php?IM=#$# ",
"https://survey.az1.qualtrics.com/CP/Graphic.php?IM=#$# ",
];
const defaultWidth = 400;
const frame = document.getElementById('frame');
const msg = frame.appendChild(document.createElement("h3"));
const img = frame.appendChild(document.createElement("img"));
var awaiting = false;
var loaded = true;
var counter = 0;
var loadedTs;

frame.style["text-align"] = "center";
img.style.margin = "3em auto";
msg.innerHTML = "Press ENTER to start";

function resize(img, factor) { img.style.width = (defaultWidth * factor) + "px"; }

img.onload = function() {
img.style.height = "auto";
resize(img, 1);
img.style.display = "block";
loadedTs = Date.now();
awaiting = true;
loaded = true;
msg.innerHTML = "Press I to zoom in and M to zoom out";
}

document.addEventListener('keydown', function(event) {
const ts = Date.now();
if (!awaiting && loaded && event.keyCode == 13) {
img.style.display = "none";
loaded = false;
if (counter < images.length) {
img.src = images[counter++];
msg.innerHTML = "Loading...";
} else {
msg.innerHTML = "Done!";
}
} else if (awaiting) {
if (event.keyCode === 73) { resize(img, 2); }
else if (event.keyCode === 77) { resize(img, 0.5); }
else { return; }
awaiting = false;
msg.innerHTML = "Press ENTER for next image";
Qualtrics.SurveyEngine.setEmbeddedData('Img'+counter, ts-loadedTs);
}
});

Leave a Reply