2011-01-01 10 views
2

Dies ist der chars: "*+-/";Zufällige Zeichen in einer JS-Datei

Javascript getElementByld

Wie ich "randt" tun kann 1 zufällige Zeichen sein?

Also, wenn ich schreibe:

document.getElementById("sms-text").innerHTML = "" + random2 + randt; 

Es ist für ex "22*" oder "51+" wird

Wie mache ich das?

Antwort

1

Das ist ziemlich einfach mit einer Kombination aus Math.random() und Math.floor() zu tun:

var chars = "*+-/", 
    randt = chars[Math.floor(Math.random() * 4)]; 

Beachten Sie, dass 4 mit chars.length ersetzen können, wenn Sie nicht wissen, wie viele Zeichen in chars sind.

+1

würde ich die magische Zahl '4' durch 'Zeichen ersetzen .length', auch wenn Sie vorher die Länge von 'chars' kennen. –

+0

es funktioniert, danke – user558773

+0

@Bart Kiers Also würde ich, je nachdem, wie in Stein gesetzt "chars" ist. – lonesomeday

2

Wenn ich Ihre Frage richtig verstehe, nehmen Sie eine Zufallszahl 0-3, dann finden Sie den Charakter an dieser Position;

var signs = "*+-/"; 

var signId = Math.floor(Math.random() * signs.length); 

var sign = signs.charAt(signId); 
2
var str = "*+-/"; 
var random_char = str[Math.floor(Math.random() * str.length)]; 

Wie die anderen Antworten darauf hin, würde str.charAt() auch funktionieren.

+0

Wird diese Methode für den Zugriff auf ein Zeichen in allen Browsern unterstützt? Ich habe eine vage Erinnerung, dass IE es nicht mag, aber ich bin mir nicht sicher. – Matchu

+0

@Matchu: Funktioniert in IE7 für mich. Nicht sicher über IE6, aber ich denke, es funktioniert auch dort. – Tomalak

0
var randt=['*','+','-','/'][Math.floor(Math.random()*4)]; 
1

einfach nur eine Zufallszahl zwischen 0 und der Länge der Saite greifen und dann das Zeichen wie so ausgeschnitten

var chars = "+-/"; 
var char = chars[Math.floor(Math.random() * chars.length)]; 

char mit

alternativ können den Zufallscharakter sein würden Sie Fügen Sie dem Prototyp die Rand-Methode wie folgt hinzu.

String.prototype.randChar = function() 
{ 
    return this[Math.floor(Math.random() * this.length)]; 
} 

an d dann innerhalb einer beliebigen Zeichenkette erstellt wurden, können Sie wie verwenden, so

char = "+-.".randChar(); 
+0

Standard-Javascript-Implementierungen haben keine globale 'rand'-Funktion:/ – Matchu

+0

Whoops, Updated. – RobertPitt

1

Dies ist im Grunde die gleiche Frage wie Sie before gefragt, nur mit dem Unterschied, dass Sie innerHTML statt document.write verwenden. Der Weg, um die Zeichenfolge zu erzeugen, ist das gleiche, so dass Sie nur die Funktion von meiner vorherigen Antwort verwenden können:

function makeid(lastNumber) { 
    var possible = "*+-/"; 
    return lastNumber + possible.charAt(Math.floor(Math.random() * possible.length)); 
} 

Verbrauch:

document.getElementById("sms-text").innerHTML = makeid(random2); 
+0

+1 für die Bereitstellung der Perspektive. \*Seufzer\* – Tomalak

Verwandte Themen