2012-04-03 75 views
0

我收到左侧无效的任务。左侧的分配无效

我想要做的是,使用jscolor http://jscolor.com通过Mapbender http://mapbender.org来定义多边形的颜色。

我该怎么做:通过点击选择一个多边形,然后打开选项对话框(单独窗口),其中我有几个选项,包括颜色。

mycode的:

 if (isTransactional) {str += "\t\t<tr>\n"; 
     var options = ["insert", "update", "delete", "abort", "pick"]; 
     for (var i = 0 ; i < options.length ; i++) { 
      var onClickText = "this.disabled=true;var result = window.opener.formCorrect(document, '"+featureTypeElementFormId+"');"; 
      onClickText += "if (result.isCorrect) {"; 
      onClickText +=  "window.opener.dbGeom('"+options[i]+"', "+memberIndex+"); "; 
//    onClickText +=  "window.close();"; 
       onClickText += "}"; 
      onClickText += "else {"; 
      onClickText +=  "alert(result.errorMessage);this.disabled=false;" 
      onClickText += "}"; 
if (options[i] == "insert" && hasGeometryColumn && (!fid || showSaveButtonForExistingGeometries)) { 
       str += "\t\t\t<td><input type='button' name='saveButton' value='"+msgObj.buttonLabelSaveGeometry+"' onclick=\""+onClickText+"\" /></td>\n"; 
      } 
if (!featureTypeMismatch && fid) { 
       if (options[i] == "update" && hasGeometryColumn) { 
        str += "\t\t\t<td><input type='button' name='updateButton' value='"+msgObj.buttonLabelUpdateGeometry+"' onclick=\""+onClickText+"\"/></td>\n"; 
       } 
if (options[i] == "delete"){ 
        var deleteOnClickText = "var deltrans = confirm('"+msgObj.messageConfirmDeleteGeomFromDb+"');"; 
        deleteOnClickText += "if (deltrans){"; 
        deleteOnClickText += onClickText + "}"; 
        str += "\t\t\t<td><input type='button' name='deleteButton' value='"+msgObj.buttonLabelDeleteGeometry+"' onclick=\""+deleteOnClickText+"\"/></td>\n"; 
       }} 
if (options[i] == "abort") { 
       str += "\t\t\t<td><input type='button' name='abortButton' value='"+msgObj.buttonLabelAbort+"' onclick=\"window.close();\" /></td>\n"; 
      } 
if (options[i] == "pick") { 
       var color; 
       str += "<td><input class='color' name='color' id='cPick' onchange="+color+"></td>"; 
       str += "<td><input type='text' id='text' value="+color+"></td>"; 
       //color = document.getElementById('cPick').value; 
       //var color2 = color; 
       //alert(color2); 
      } 
     }str += "\t\t</tr>\n";}str += "\t</table>\n";str += "<input type='hidden' id='fid' value='"+fid+"'>"; 
//str += "<input type='text' name='mb_wfs_conf'>"; 


    str += "</form>\n";}return str;} 

中的应用:

它是一个Mapbender应用程序来显示地图和绘制在其上。您可以绘制点,线和多边形也可以合并并分割它们。 您也可以选择您绘制的多边形来改变它们。

使用: PHP,JavaScript的,HTML,CSS,Mapbender,jQuery的,利用Geoserver和PostgreSQL,WMS,WFS-T

+0

你想用'color = document.getElementById('cPick')。value来实现什么?这应该是什么使'onchange'属性的价值? – 2012-04-03 08:26:18

+0

我想获取“颜色”字段返回的值。 – JoelM 2012-04-03 08:38:18

+0

片段中没有“颜色”字段。不要忘记,任何人都必须继续是你提供的。如果我们需要背景,请提供背景。链接到您的网页是最好的;更多的代码可能就足够了。 – 2012-04-03 08:46:50

回答

2

我敢肯定这是因为,;

str += "<td><input class='color' name='color' id='cPick' onchange=" + color = document.getElementById('cPick').value; + "></td>"; 

只是做

var color = document.getElementById('cPick').value; 

str += "<td><input class='color' name='color' id='cPick' onchange=" + color + "></td>"; 

编辑:不知道你正在尝试做的,因为颜色是不是一个函数,但它应该停止显示错误的GET。

+0

是的,但现在出现了一个新的错误,说document.getElementById('cPick')为空,但该字段的默认值是#FFFFFF(白色)。 – JoelM 2012-04-03 08:43:32

+0

创建一个小提琴然后把你的代码在那里(http://jsfiddle.net),这样人们就可以理解你在做什么。 – mpm 2012-04-03 09:02:04

+0

需要PHP才能正确运行此代码,这也只是单个iframe的代码。 – JoelM 2012-04-03 09:54:06

1
str += "<td><input class='color' name='color' id='cPick' onchange=" + 
    color = document.getElementById('cPick').value; + "></td>"; 
               ^
         Syntax error here -------+ 

您应该使用本地变量或用括号括起color = ...语句。这修复了语法错误,但它不会为您提供有效的onchange处理程序。

相关问题