【问题标题】:Code works in everything except for Wapka. Why?除 Wapka 外,代码适用于所有领域。为什么?
【发布时间】:2020-08-24 05:29:33
【问题描述】:

好的,所以我昨晚花了大约三个小时编写一个 div 生成器,并且我已经对其进行了测试。有用。问题是这样的:
我使用Wapka.mobi免费创建网站(因为我还太年轻,还没有正式的编程生涯),我运行this website。在该站点上,我有一个编程中心,其中包含对新程序员有用的工具(目前是十六进制和 rgba 计算器),我想将生成器添加到其中。可悲的是,此代码在 Wapka 中不起作用。奇怪的是它在其他任何地方都可以使用。 Notepadd++ 运行良好,我所知道的几乎每个 html 编辑器也是如此。这是代码。

<script language="javascript">

function genDiv(){

var brdr = document.getElementById('udBorder').value;
var brdrw = document.getElementById('udBorderWidth').value;
var brdrr = document.getElementById('udBorderRadius').value;
var pad = document.getElementById('udPadding').value;
var padl = document.getElementById('udPaddingL').value;
var padr = document.getElementById('udPaddingR').value;
var padt = document.getElementById('udPaddingT').value;
var padb = document.getElementById('udPaddingB').value;
var back = document.getElementById('udBackground').value;
var bc1 = document.getElementById('udFirstC').value;
var bc2 = document.getElementById('udSecondC').value;
var c = document.getElementById('udColor').value;

var brdrch = document.getElementById('borderAlt');
var padch = document.getElementById('paddingAlt');
var backch = document.getElementById('backAlt');

var result = document.getElementById('divRes');

if((brdrch.checked == true) && (padch.checked == true) && (backch.checked == true)){
result.innerHTML = "<div style=\"padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == true) && (padch.checked == true) && (backch.checked == false)){
result.innerHTML = "<div style=\"padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == true) && (padch.checked == false) && (backch.checked == false)){
result.innerHTML = "<div style=\"padding:" + pad + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == true) && (padch.checked == false) && (backch.checked == true)){
result.innerHTML = "<div style=\"padding:" + pad + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == false) && (padch.checked == true) && (backch.checked == true)){
result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == false) && (padch.checked == true) && (backch.checked == false)){
result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
}else if((brdrch.checked == false) && (padch.checked == false) && (backch.checked == true)){
result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding:" + pad + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
}else{
result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding:" + pad + "px" + ";background:" + back + ";color:" + c + ";" + "\"> </div>";
}
}

</script>
<div style="border:solid 1px #000;padding:5px;text-align:center;background:#FFF;color:#000;">

<h1>&lt;div&gt; Generator</h1>
<hr/>

<div id="border">
<b>Border:</b> <input type="text" id="udBorder" value="solid" placeholder="Enter Border Type"/>
<br/>
Width: <input type="text" id="udBorderWidth"  value="1" placeholder="Enter Border Width"/>
<br/>
Radius: <input type="text" id="udBorderRadius" value="5" placeholder="Enter Border Radius"/><br/>
</div>

<input type="checkbox" id="borderAlt" onclick="borderAdj();"/> No border

<script language="javascript">

function borderAdj(){
var ch = document.getElementById('borderAlt');
var b = document.getElementById('border');

if(ch.checked == true){
b.style.opacity = '.5';
}else{
b.style.opacity = '1';
}
}

</script>

<hr/>

<div id="padding">
<span id="padding1">
<b>Padding:</b> <input type="text" id="udPadding" value="2" placeholder="Enter Padding Amount"/>
</span>
<span style="display:none;" id="padding4">

Padding-left: <input type="text" id="udPaddingL" value="2" placeholder="Enter Padding Amount"/><br/>
Padding-right: <input type="text" id="udPaddingR" value="2" placeholder="Enter Padding Amount"/><br/>
Padding-top: <input type="text" id="udPaddingT" value="2" placeholder="Enter Padding Amount"/><br/>
Padding-bottom: <input type="text" id="udPaddingB" value="2" placeholder="Enter Padding Amount"/><br/>

</span>
<br/>
<input type="checkbox" id="paddingAlt" onclick="padAdj();"/> Padding by side
</div>
<script language="javascript">

function padAdj(){
var ch = document.getElementById('paddingAlt');
var oneP = document.getElementById('padding1');
var fourP = document.getElementById('padding4');

if(ch.checked == true){
oneP.style.display='none';
fourP.style.display='';
}else{
oneP.style.display='';
fourP.style.display='none';
}
}

</script>

<hr/>

<div id="background">

<span id="normBack">
<b>Background:</b> <input type="text" id="udBackground" value="#FFFFFF" placeholder="Enter Background"/>
</span>

<span id="linBack" style="display:none;">

First Color: <input type="text" id="udFirstC" value="#FFFFFF" placeholder="First Color"/><br/>
Second color: <input type="text" id="udSecondC" value="#000000" placeholder="Second Color"/>

</span>

<br/>

<input type="checkbox" id="backAlt" onclick="backAdj();"/> Linear background

</div>
<script language="javascript">

function backAdj(){
var ch = document.getElementById('backAlt');
var n = document.getElementById('normBack');
var l = document.getElementById('linBack');

if(ch.checked == true){
n.style.display='none';
l.style.display='';
}else{
n.style.display='';
l.style.display='none';
}
}

</script>

<hr/>

<div id="color">

<b>Color:</b> <input type="text" id="udColor" value="#000000" placeholder="Enter Color"/>

</div>

<hr/>

<input type="button" onclick="genDiv();" value="Generate!"/>

</div>

<br/><br/>

Result Code:<br/>

<textarea id="divRes" cols="20" rows="5" contenteditable="true"></textarea>

对于代码这么长,我深表歉意,我只是找不到任何问题。在这一点上,我责怪Wapka。提前致谢。

这是一个 jsfiddle https://jsfiddle.net/4nkmxep9/

【问题讨论】:

标签: javascript html css


【解决方案1】:

似乎在某个地方,Wapka 在您的 javascript 文本中有 escaped 字符,这就解释了它为什么不起作用。

例如,您的线路:

if((brdrch.checked == true) && (padch.checked == true) && (backch.checked == true)){

已翻译为:

if((brdrch.checked == true) &amp;&amp; (padch.checked == true) &amp;&amp; (backch.checked == true)){

因此该行在第一个 ; 处终止,导致 javascript 无效。

恐怕我对 Wapka 不熟悉,但也许还有另一种机制可以用来导入 javascript,它不会像所有 html 标记一样转义字符。

您是否尝试过在脚本标签中指定&lt;script type="text/javascript"&gt;? (不确定这是否有帮助?)


更新

或者,作为一个小技巧,你可以嵌套你的逻辑 AND 语句,例如

if(brdrch.checked) {
    if(padch.checked) {
        if(backch.checked) {

            //do your thang
        }
    }
}

更新 #2

逻辑重构

if(brdrch.checked) {
    if(padch.checked) {
        if (backch.checked) {
            result.innerHTML = "<div style=\"padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
        } else {
            result.innerHTML = "<div style=\"padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
        }
    } else {
        if (backch.checked) {
            result.innerHTML = "<div style=\"padding:" + pad + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
        } else {
            result.innerHTML = "<div style=\"padding:" + pad + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
        }
    }
} else {
    if(padch.checked) {
        if (backch.checked) {
            result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
        } else {
            result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding-left:" + padl + "px" + ";padding-right:" + padr + "px" + ";padding-top:" + padt + "px" + ";padding-bottom:" + padb + "px" + ";background:" + back + ";color:" + c + ";" + "\">   </div>";
        }
    } else {
        if (backch.checked) {
            result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding:" + pad + "px" + ";-webkit-background:linear-gradient(" + bc1 + "," + bc2 + ");-moz-background:linear-gradient(" + bc1 + "," + bc2 + ");-o-background:linear-gradient(" + bc1 + "," + bc2 + ");-ms-background:linear-gradient(" + bc1 + "," + bc2 + ");color:" + c + ";" + "\">   </div>";
        } else {
            result.innerHTML = "<div style=\"border:" + brdr + " " + brdrw+"px" + ";border-radius:" + brdrr + "px" + ";padding:" + pad + "px" + ";background:" + back + ";color:" + c + ";" + "\"> </div>";
        }
    }
}

看妈妈 - 没有“和”

【讨论】:

  • 好吧,要么我有语法错误,要么它不起作用。它使代码在 Notepad++ 中无用,但我的网站中仍然有原始代码。
  • 你好。我重新考虑了逻辑以省略所有 & 符号。 (参见更新#2)这是一个 jsfiddle:jsfiddle.net/4nkmxep9/2。希望它有效:D
  • 非常感谢,此修复成功!它工作正常(我忘了在 css 中添加一般背景规范,但我可以解决这个问题),我希望他们能在某个时候解决这个问题。
猜你喜欢
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多