2015-07-12 68 views
0

所以我为夏季班做了这个,我得让这个地毯计算器在“执行一个document.write来显示结果到一个新的html页面中显示结果“。 (直接从作业中引用)。它说要使用document.write,并在w3上使用一些教程后掌握document.write的概念,但是当我尝试将其应用于我的项目时,它对我的​​网页没有任何影响。HTML + Javascript document.write不能正常工作

下面是我的代码:

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Oldstyle" type="text/css" /> 

<head> 
<title>Tutorial Project 10</title> 
</head> 
<body> 

<h1>Carpet Calculator</h1> 

<form name = "carpet" action=" "> 

</br>Enter the length of your room in feet</br><input name = "length" type = "text" /> 

</br>Enter the width of your room in feet</br><input name = "width" type = "text" /> 
</br>Typically an allowance is made for room irregularities and unavoidable waste. 
</br>Enter the percent overage as an integer in the interval [0, 20]</br><input name = "overage" type = "text" /> 

</br></br><input name = "SqFt" type = "button" value = "Compute Square Feet " onclick = "ComputeSquareFeet()" /> 

</br></br><input name = "SqYd" type = "button" value = "Compute Square Yards" onclick = "ComputeSquareYards()" /> 


</br></br><input type = "reset" value = "Clear" /> 

</form> 

<script type="text/javascript"> 

     function ComputeSquareFeet() 
     { 
      var SqFt = (carpet.length.value*carpet.width.value); 
      carpet.SqFtResult.value = SqFt+(SqFt*(carpet.overage.value/100)); 
      document.write(SqFtResult); 
     } 




     function ComputeSquareYards() 
     { 
      var SqYd = ((carpet.length.value/3)*(carpet.width.value/3)); 
      carpet.SqYdResult.value = SqYd+(SqYd*(carpet.overage.value/100)); 
      document.write(SqYdResult); 
     } 


</script> 

</body> 
</html> 

页是这样的,用户输入的数据为3盒,按下按钮,它调用的函数,并在该函数结束,它执行文件。写。然而,在做了一堆试验和错误之后,我得出结论说我的公式正在工作,函数被调用,但document.write并不是由于某种原因。

关于我在做什么错的任何想法?谢谢!

编辑:我有这样的显示功能的结果,只是为了确保它是工作,但一旦我切换到文件撰写,似乎没有什么工作

+0

你在页面加载后使用document.write –

+0

@JaromandaX那我该如何解决呢? http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_write3我不明白它在这里的做法与我的不同 – DrMoney

回答

0

在我看来,一个文本框,有问题不是真的document.write,但可能是你从窗体中获取数据的方式。

它应该是这样的:

document.forms["formname"][fieldname].value; 

也营造出variabe不喜欢它:

var SqYdResult=somthing; 

希望它可以帮助

+0

我无法弄清楚如何在评论中发布我的代码,但我尝试了你的建议,但它不起作用 – DrMoney

1

好像你需要写这一个新的HTML页面;例如尝试调用下面的功能与您的文字:

function writeToNewPage(text) { 
    var newPage = window.open("", "New Page","width=400, height=300, scrollbars=1, resizable=1"); 

    newPage.document.open(); 
    newPage.document.write(text); 
    newPage.document.close(); 
} 

你不能没有擦整个页面的当前页面上使用文件撰写,它似乎分配问题不实说了新的一页。

+0

它专门用于使用document.write。我认为我的教授打算让整个页面消失,只剩下答案。不过,我只是试着看你的代码是否可以工作,但什么也没有发生。我认为我的问题可能在其他地方,而document.write是好的。 我有一个文本框,显示功能的结果只是为了确保它工作,但一旦我切换到文档。写,似乎没有任何工作 – DrMoney

+0

不知道你将如何取代当前页面。如果您使用Chrome或IE,则可以按F12调出开发人员工具栏,然后在控制台中键入document.write(“test”)。你可以看到它似乎没有做任何事情。 –

+0

打开一个新窗口应该可以工作,并且您正在使用document.write。不过,您可能会收到关于弹出窗口的警告。 –

0

原来我自己走在前面的

function ComputeSquareFeet() 
{ 
    var SqFt = (carpet.length.value*carpet.width.value); 
    carpet.SqFtResult.value = SqFt+(SqFt*(carpet.overage.value/100)); 
    document.write(SqFtResult); 
} 

需求是

function ComputeSquareFeet() 
{ 
    var SqFt = (carpet.length.value*carpet.width.value); 
    var SqFtResult = SqFt+(SqFt*(carpet.overage.value/100)); 
    document.write("Carpet needed in square feet: " + SqFtResult); 
} 

,因为我没有宣布它不工作的变量。当我定义它时,我得到了我想要的结果。

谢谢大家的帮助!