2012-04-11 7 views
1

Ich versuche, dieses Programm zu erstellen, um den Benutzer für zwei Wörter und dann beide Wörter in einer Zeile auszugeben. Die Wörter werden durch genug Punkte getrennt, so dass die gesamte Zeilenlänge 30 ist. Ich habe es versucht und kann es nicht bekommen.Javascript - Zeile gesamt

<html> 
<head> 
<title>Lenth of 30</title> 
<script type="text/javascript"> 
//Program: Lenth of 30 
//Purpose: The words will be separated by enough dots so that the total line length is 30: 
//Date last modified: 4/11/12 
var firstword = "" 
var secondword = "" 

firstword = prompt("Please enter the first word.") 
secondword = prompt("Please enter the second word.") 

document.write(firstword + secondword) 


</script> 
</head> 
<body> 
</form> 
</body> 
</html> 

Ein Beispiel:

erstes Wort eingeben:

Schildkröte

zweites Wort eingeben

(Programm wird aus dem folgenden Druckschrift)

Schildkröte .................... 153

+0

Sie erwarten, dass jemand das für Sie löst? Ich sehe das Problem nicht in Ihrer Frage, lesen Sie Handbücher über String-Funktionen – varela

Antwort

0

Subtrahieren Sie die Länge des ersten Wortes und die Länge des zweiten Wortes von 30, und drucken Sie so viele aus Punkte in einer for-Schleife.

+0

Können Sie mir eine Möglichkeit geben, dies zu programmieren? –

+0

Nicht sicher, warum ich abgelehnt wurde. Der Sinn dieser Seite besteht nicht darin, die gesamten Programme für sie zu schreiben. – Jordan

1

müssen Sie berechnen, wie viele Perioden Sie benötigen.

var enteredLength = firstword.length + secondword.length; 
var dotCount = 30 - enteredLength; 

var dots = ""; 
for(var i = 0; i < dotCount; i++) dots += '.'; 

Sie nehmen können, wenn von dort ....

0

Sie die length Eigenschaft verwenden, können die Länge der einzelnen Strings, um zu bestimmen, und dann die Anzahl der . s berechnen, die Sie hinzufügen müssen.

3

Hier ist eine generische Lösung, die Ihnen zeigt, wie dies zu tun:

function dotPad(part1, part2, totalLength) { 
    // defaults to a total length of 30 
    var string = part1 + part2, 
     dots = Array((totalLength || 30) + 1).join('.'); 
    return part1 + dots.slice(string.length) + part2; 
} 

Verwenden Sie es wie folgt:

dotPad('foo', 'bar'); // 'foo........................bar' 

In Ihrem Fall:

dotPad(firstword, secondword); 

Dies ist ein sehr Vereinfachte Lösung - überprüfen Sie bei Bedarf, ob die verkettete Form der Eingabezeichenfolgen kürzer alsistZeichen.

+0

Sie können dies weiter vereinfachen: 'return part1 + Array ((totalLength || 30) + 1 - part1.length - part2.length) .join ('.') + Part2;' – Will

+0

@WilliamVanRensselaer Right. Ich denke, dass es auf diese Weise besser lesbar ist (persönliche Präferenz). –

0

Sie können die Anzahl der Punkte mit ein paar einfachen Berechnungen erhalten. Subtrahiere jede Wortlänge von 30.

EDIT: Ich mag eigentlich Mathias Lösung besser. Aber Sie können es einfacher machen:

document.write(firstword + Array(31 - firstword.length - secondword.length).join('.') + secondword);