【问题标题】:HTML + Javascript document.write not workingHTML + Javascript document.write 不工作
【发布时间】:2015-07-12 05:34:25
【问题描述】:

所以我正在为暑期班做这个,我必须让这个地毯计算器在“执行文档。写入以在新的 html 页面上显示结果”中显示结果。 (引用直接来自作业)。它说要使用document.write,我在使用w3上的一些教程后掌握了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。但是,在进行了一系列试验和错误之后,我得出结论,我的公式正在工作并且正在调用该函数,但由于某种原因 document.write 没有。

关于我做错了什么有什么想法吗?谢谢!

编辑:我有一个显示函数结果的文本框,只是为了确保它正常工作,但是一旦我切换到 document.write,似乎没有任何工作

【问题讨论】:

标签: javascript html


【解决方案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();
}

你不能在不擦除整个页面的情况下在当前页面上使用 document.write,而且看起来作业问题确实说的是一个新页面。

【讨论】:

  • 专门说要使用document.write。我想我的教授打算把整个页面都擦掉,只剩下答案。但是,我尝试了您的代码只是想看看它是否可以工作,但什么也没发生。我认为我的问题可能出在其他地方,而 document.write 很好。我有一个显示函数结果的文本框,只是为了确保它正常工作,但是一旦我切换到 document.write,似乎没有任何效果
  • 不确定如何替换当前页面。如果您使用的是 Chrome 或 IE,您可以按 F12 调出开发人员工具栏,然后在控制台中键入 document.write("test")。你可以看到它似乎没有做任何事情。
  • 打开一个新窗口应该可以工作,并且您正在使用 document.write。不过,您可能会收到有关弹出窗口的警告。
【解决方案2】:

在我看来,问题并不在于document.write,而可能是您从表单中获取数据的方式。

应该是这样的:

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

也可以创建一个变量:

var SqYdResult=somthing;

希望对你有帮助

【讨论】:

  • 我不知道如何在评论中发布我的代码,但我尝试了你的建议,但它不起作用
【解决方案3】:

原来我是在超越自己

 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);
}

因为我没有声明它不起作用的变量。当我定义它时,我得到了我想要的结果。

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多