I've done some research but with no success. How to concatenate string and variable and make it behave like a variable?
var oTranslate = "kółko",
xTranslate = "krzyżyk",
suffix = "Translate";
n1 = "x" or "o"
alerts.text("Winner is" + n1 +"Translate" + "!");
My goal is to join variable "n1" with word "Translate" and display variable defined as "oTranslate" or "xTranslate", depending on value of "n1". I have been trying with suffixes but with no good results. In this example I want to avoid using if statements.
Thanks!
Edit: I couldn't find solution in post marked by T.J. Crowder so in my opinion it's not duplicate.
Here is snippet for bigger picture: I want to "Winner is oDes" change to "Winner is kółko" by joining var "o" with string "Des" and displaying it as a defined variable (oDes = "kółko") in "call function. Nina Scholz pointed out solution but with different approach (thanks ;) )
$(function(){
var x = "o",
oTranslate = "kółko",
xTranslate = "krzyżyk",
pre = "Translate",
flag,
alerts = $("div.alerts");
var testy = ["abc", "def", "ghi", "adg", "beh", "cfi", "aei", "gec"];
var styleWin = {"background-color": "yellow",
"color" : "red" };
//translate = { o: "kółko", x: "krzyżyk" }
// abc
// def
// ghi
// abc, def, ghi, adg, beh, cfi, aei, gec
//check if we have 3 in row, if yes, alert winner
function check(nazwa){
for(var ij = 0; ij < testy.length; ij++){
// console.log("arr " + testy[0][0]);
// console.log("A " + a.innerHTML);
if(($("#"+testy[ij][0]).text()) == nazwa && ($("#"+testy[ij][1]).text()) == nazwa && ($("#"+testy[ij][2]).text()) == nazwa){
call(testy[ij][0], testy[ij][1], testy[ij][2], nazwa);
}
}
};
function call(f1, f2, f3, n1){
//console.log('Wygrał ' + n1 + "Translate");
//alerts.text('Wygrał ' + translate[n1]);
alerts.text('Winner is ' + n1+'Translate');
flag = "end";
$("#"+f1+",#"+f2+", #"+f3).css(styleWin);
};
//check if game has ended or player clicks at used field, else put sign in field
$("div.item").on("click", function(){
var place = this.innerText;
if(place == "x" || place == "o"){
console.log("Niedozwolony ruch!");
} else if(flag !== "end"){
this.innerText = x;
check(x);
}
});
//Change between x and o
$(".container").on("click", function() {
if(flag !== "end"){
(x == "o") ? x = "x" : x = "o";
return x;
}
});
//reset
$(".reset").on("click", function(){
$(".item").removeAttr('style');
$(".item").empty();
flag = "";
});
});
body {
margin: 0;
padding: 0;
}
.over {
display: grid;
border: 5px solid red;
grid-template-columns: auto 300px auto;
grid-template-rows: auto 300px auto;
grid-template-areas: ". f1 ." ". x ." ". f2 .";
}
.container {
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-template-areas: "a b c" "d e f" "g h i";
grid-area: x;
grid-gap: 0;
justify-items: stretch;
align-items: stretch;
border: 1px solid red;
}
.item-a {
grid-area: a;
}
.item-b {
grid-area: b;
}
.item-c {
grid-area: c;
}
.item-d {
grid-area: d;
}
.item-d {
grid-area: d;
}
.item-e {
grid-area: e;
}
.item-f {
grid-area: f;
}
.item-g {
grid-area: g;
}
.item-h {
grid-area: h;
}
.item-i {
grid-area: i;
}
.fix {
grid-area: f1;
height: 100px;
}
.fix2 {
grid-area: f2;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
}
.item {
border: 1px solid black;
display: flex;
align-items: center;
justify-content: center;
}
.item:hover {
background-color: red;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="over">
<div class="fix">
<div class="alerts"></div>
</div>
<div class="container">
<div class="item-a item" id="a"></div>
<div class="item-b item" id="b"></div>
<div class="item-c item" id="c"></div>
<div class="item-d item" id="d"></div>
<div class="item-e item" id="e"></div>
<div class="item-f item" id="f"></div>
<div class="item-g item" id="g"></div>
<div class="item-h item" id="h"></div>
<div class="item-i item" id="i"></div>
</div>
<div class="fix2"><button class="reset">Reset</button></div>
</div>