показать два изображения с одинаковым выпадающим меню от c# до html - PullRequest
1 голос
/ 14 марта 2020

У меня есть сценарий c#, который создает в двух циклах for два набора диаграмм, они имеют одинаковое имя, но сохраняются в двух разных папках в том же каталоге, что и сценарий, затем он генерирует файл html в я добавил выпадающее меню и после того, как выбрано одно имя, оно отображает изображение, теперь моя проблема в том, что я хочу, чтобы оба изображения отображались одновременно, но как нуб я мог думать только о создании двух выпадающих меню, одно для первый набор и один для второго. есть ли способ сделать так, чтобы полученное имя могло загружать оба?

 string employeeImage = "";
        //the for loop that creates the charts and updates the list of the first images 
            employeeImage = employeeImage + "      <option value=\"EmployeeChargeable\\"+Convert.ToString(textBox1.Text)+".png\">"+titolo+"</option>";
        //end of the first loop

string employeeImageN = "";

        //the for loop that creates the charts and updates the list of the second images 
            employeeImageN = employeeImageN + "      <option value=\"EmployeeNonChargeable\\" + Convert.ToString(textBox1.Text) + ".png\">" + titolo + "</option>";
//end of the second looop

в примере два списка созданы с двумя различными путями для магов, на данный момент это код для создания HTML

string savHtml = "<html>" +
                    "<head>" +
                    "  <title>Select Image</title>" +
                    "  <script type=\"text/javascript\">" +
                    "  function displayImage(elem) {" +
                    "    var image = document.getElementById(\"canvas\");" +
                    "    image.src = elem.value;        " +
                    "  }" +
                     "  function displayImageN(elem) {" +
                    "    var imageN = document.getElementById(\"canvasN\");" +
                    "    imageN.src = elem.value;        " +
                    "  }" +
                    "  </script>" +
                    "</head>" +
                    "<body>" +
                    "  <form name=\"controls\">" +
                    //seleziona persone
                    "    <select name=\"imageList\" onchange=\"displayImage(this);\">" +
                   employeeImage+
                    "</select>" +

                    "    <img id=\"canvas\" src=\"EmployeeChargeable/fire1.png\" />" +
                     "    <select name=\"imageList\" onchange=\"displayImageN(this);\">" +
                   employeeImageN +
                    "</select>" +
                    "    <img id=\"canvasN\" src=\"EmployeeNonChargeable/fire1.png\" />" +
                    "  </form>" +
                    "</body>" +
                    "</html>";

        File.WriteAllText(@"C:\Users\...\theFile.html", savHtml);

1 Ответ

0 голосов
/ 15 марта 2020

Вы должны воспользоваться C# литеральными строками, ваш код будет значительно более читабельным ...

Не уверен на 100% в структуре вашей папки, мой пример ниже делает несколько предположений:

savHtml = @"
    <html>
    <head>
    <title>Select Image</title>
    </head>
    <body>
    <form name='controls'>
        <select name='imageList' onchange='displayImage(this);'>  
            <option value='fire.png'>fire</option>
            <option value='mare.png'>mare</option>
            <option value='terra.png'>terra</option>
        </select>

        <img id='canvas' src='EmployeeChargeable/fire1.png' />
        <img id='canvasN' src='EmployeeNonChargeable/fire1.png' />
    </form>
    <script type='text/javascript'>
        var image = document.getElementById('canvas');
        var imageN = document.getElementById('canvasN');

        function displayImage(elem) {
            image.src = 'EmployeeChargeable/' + elem.value;        
            imageN.src = 'EmployeeNonChargeable/' + elem.value;        
        }
    </script>
    </body>        
    </html>";

Так что я жестко запрограммировал несколько опций, кажется, папки EmployeeChargeable и EmployeeNonChargeable всегда одинаковы, и все, что изменяется, - это имя файла (только предположение)

Кроме того, я переместил скрипт внизу, скрипты могут блокировать загрузку дополнительных ресурсов. Поместив их внизу, ваш стиль, контент и мультимедиа могут загружаться быстрее, создавая ощущение повышенной производительности. Ваш HTML теперь маленький, и производительность не является проблемой, но, поскольку вы попадаете в неприятности с более крупными вещами, которым стоит следовать.

Внутри javascript кода я переместил getElementById за пределы нам просто нужна функция, которая не требует повторения при каждом вызове function displayImage, и теперь все, что делает эта функция, это устанавливает источник изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...